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 }