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