sunty
2019-08-01 f79f18bf3e65ad0eaf8fd1feb788bf792e362520
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package discovery
 
import (
    "basic.com/pubsub/protomsg.git"
    "basic.com/valib/gopherdiscovery.git"
    "fmt"
    "time"
    "webserver/extend/logger"
    "github.com/gogo/protobuf/proto"
)
 
const (
    Discovery_Server = "tcp://0.0.0.0:40008"
    Discovery_UrlPubSub = "tcp://0.0.0.0:50008"
)
 
//启动discovery的server
var discoveryServer *gopherdiscovery.DiscoveryServer
var dbChangeChan chan *protomsg.DbChangeMessage
func StartServer() {
    var clients []string
    var err error
    var (
        defaultOpts = gopherdiscovery.Options{
            SurveyTime:   3 * time.Second,
            //RecvDeadline: 3 * time.Second,
            PollTime:     5 * time.Second,
        }
    )
 
    discoveryServer, err = gopherdiscovery.Server(Discovery_Server, Discovery_UrlPubSub, defaultOpts)
 
    logger.Debug("server: ", discoveryServer)
    logger.Debug("err:",err)
    logger.Debug("clients: ",clients)
 
    dbChangeChan = make(chan *protomsg.DbChangeMessage)
 
    for {
        select {
        case dbMsg := <-dbChangeChan:
            publishMessage(dbMsg)
        }
    }
}
 
//广播数据库改变的msg
func publishMessage(msg *protomsg.DbChangeMessage) {
    sendBytes,err := proto.Marshal(msg)
    if err ==nil{
        discoveryServer.PublishMsg(string(sendBytes))
    }
}
 
func AddDbMessage(msg *protomsg.DbChangeMessage) {
    fmt.Println("MSG In")
    dbChangeChan<-msg
}