| | |
| | | import ( |
| | | esApi "basic.com/pubsub/esutil.git" |
| | | "basic.com/pubsub/protomsg.git" |
| | | "basic.com/valib/deliver.git" |
| | | "encoding/json" |
| | | "github.com/gogo/protobuf/proto" |
| | | "github.com/satori/go.uuid" |
| | | "nanomsg.org/go-mangos" |
| | | "nanomsg.org/go-mangos/protocol/req" |
| | | "nanomsg.org/go-mangos/transport/ipc" |
| | | "nanomsg.org/go-mangos/transport/tcp" |
| | | "sort" |
| | | "strconv" |
| | | "sync" |
| | | "time" |
| | | "webserver/extend/config" |
| | | "webserver/extend/logger" |
| | | "webserver/extend/util" |
| | |
| | | resultList :=make([]CompareResult,0) |
| | | for _,str :=range compServerList{ |
| | | reqUrl := "tcp://"+str |
| | | reqClient := deliver.NewClient(deliver.ReqRep, reqUrl) |
| | | err = reqClient.Send(b) |
| | | if err !=nil{ |
| | | logger.Debug("reqClient.Send err:",err) |
| | | continue |
| | | } |
| | | resultB, err := reqClient.Recv() |
| | | if err !=nil{ |
| | | logger.Debug("reqClient.Recv err:",err) |
| | | resultB := doCompareRequest(reqUrl,b) |
| | | if resultB == nil || len(*resultB) ==0 { |
| | | continue |
| | | } |
| | | rList :=make([]protomsg.Esinfo,0) |
| | | err = json.Unmarshal(resultB, &rList) |
| | | err = json.Unmarshal(*resultB, &rList) |
| | | if err !=nil{ |
| | | logger.Debug("recv result Unmarshal err:", err) |
| | | continue |
| | |
| | | return co |
| | | } |
| | | |
| | | func doCompareRequest(url string,args []byte) *[]byte{ |
| | | reqUrl := "tcp://"+url |
| | | logger.Debug("reqUrl:",reqUrl) |
| | | var sock mangos.Socket |
| | | var err error |
| | | var msg []byte |
| | | |
| | | if sock,err = req.NewSocket();err !=nil { |
| | | logger.Debug("can't new req socket:%s",err.Error()) |
| | | return nil |
| | | } |
| | | sock.AddTransport(ipc.NewTransport()) |
| | | sock.AddTransport(tcp.NewTransport()) |
| | | sock.SetOption(mangos.OptionRecvDeadline, time.Second*10) |
| | | if err = sock.Dial(url);err !=nil { |
| | | logger.Debug("can't dial on req socket:%s",err.Error()) |
| | | return nil |
| | | } |
| | | if err = sock.Send(args);err !=nil { |
| | | logger.Debug("can't send message on push socket:%s",err.Error()) |
| | | return nil |
| | | } |
| | | if msg,err = sock.Recv();err !=nil { |
| | | logger.Debug("sock.Recv receive err:%s",err.Error()) |
| | | return nil |
| | | } |
| | | sock.Close() |
| | | return &msg |
| | | } |
| | | |
| | | //填充向前端返回的数据 |
| | | func FillDataToCompareResult(rList *[]protomsg.Esinfo) []CompareResult { |
| | | resultList :=make([]CompareResult,0) |