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
|
}
|