---
panlei
2019-11-01 b4add78c5c4f581f8c005c8b4ccf090e03424be1
ruleserver/server.go
New file
@@ -0,0 +1,61 @@
package ruleserver
import (
   "basic.com/pubsub/protomsg.git"
   "basic.com/valib/gopherdiscovery.git"
   "github.com/gogo/protobuf/proto"
   "basic.com/valib/logger.git"
   "time"
)
type PubSubServer struct {
}
const (
   Discovery_Server = "tcp://0.0.0.0:40009"
    Discovery_UrlPubSub = "tcp://0.0.0.0:50009"
)
//启动discovery的server
var discoveryServer *gopherdiscovery.DiscoveryServer
var videotapChan chan *protomsg.VideotapeInfo
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)
   videotapChan = make(chan *protomsg.VideotapeInfo)
   for {
      select {
      case dbMsg := <-videotapChan:
         publishMessage(dbMsg)
      }
   }
}
//广播数据库改变的msg
func publishMessage(msg *protomsg.VideotapeInfo) {
   sendBytes,err := proto.Marshal(msg)
   if err ==nil{
      logger.Debug("看看这个疑似空指针的东西",discoveryServer)
      discoveryServer.PublishMsg(string(sendBytes))
   }
}
func AddLxMessage(msg *protomsg.VideotapeInfo) {
   videotapChan <- msg
}