| | |
| | | "basic.com/dbapi.git" |
| | | "basic.com/valib/logger.git" |
| | | "fmt" |
| | | "github.com/golang/protobuf/proto" |
| | | "nanomsg.org/go-mangos" |
| | | "nanomsg.org/go-mangos/protocol/rep" |
| | | "nanomsg.org/go-mangos/protocol/req" |
| | |
| | | |
| | | |
| | | var urlPool = make(map[string]chan structure.ResultMsg) |
| | | var pool chan *structure.ResultMsg = make(chan *structure.ResultMsg) |
| | | func Die(format string, v ...interface{}) { |
| | | logger.Info("+++++++",format) |
| | | //os.Exit(1) |
| | |
| | | for _, url := range ruleGroup.Urls { |
| | | // 为每个url建立一个chan |
| | | if strings.Contains(url.Url,"114") { |
| | | urlPool[url.Url] = make(chan structure.ResultMsg,10) |
| | | //urlPool[url.Url] = make(chan structure.ResultMsg,10) |
| | | go GoPush(url.Url) |
| | | return |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | func GoPush(url string) { |
| | | var err error |
| | | //var msg []byte |
| | | var msg []byte |
| | | var sock mangos.Socket |
| | | if sock, err = req.NewSocket(); err != nil { |
| | | Die("创建请求socket失败: %s", err.Error()) |
| | |
| | | } |
| | | logger.Info("序列化数据") |
| | | |
| | | //for v := range pool{ |
| | | // logger.Info("无限循环",v.Cid) |
| | | //} |
| | | |
| | | for { |
| | | select { |
| | | // case <-ctx.Done(): |
| | | // return |
| | | case data := <- urlPool[url]: |
| | | case data := <- pool: |
| | | logger.Info("接收到数据",data.Cid) |
| | | //bytes,err1 := proto.Marshal(data) |
| | | //logger.Info("数据长度为:",len(bytes)) |
| | | //if err1 != nil { |
| | | // logger.Info("序列化失败:",err1) |
| | | //} |
| | | //logger.Debug("groutine"+url+"推送数据") |
| | | ////bytes := []byte("ndfasojdfaidsos") |
| | | //if err = sock.Send(bytes); err != nil { |
| | | // Die("groutine"+url+"推送socket发送数据失败: ", err.Error()) |
| | | //} |
| | | //msg, err = sock.Recv(); |
| | | //if err != nil { |
| | | // Die("groutine"+url+"接收响应失败: ", err.Error()) |
| | | //} else { |
| | | // logger.Debug("事件推送成功!groutine"+url+"收到响应",string(msg)) |
| | | //} |
| | | bytes,err1 := proto.Marshal(data) |
| | | logger.Info("数据长度为:",len(bytes)) |
| | | if err1 != nil { |
| | | logger.Info("序列化失败:",err1) |
| | | } |
| | | logger.Debug("groutine"+url+"推送数据") |
| | | //bytes := []byte("ndfasojdfaidsos") |
| | | if err = sock.Send(bytes); err != nil { |
| | | Die("groutine"+url+"推送socket发送数据失败: ", err.Error()) |
| | | } |
| | | msg, err = sock.Recv(); |
| | | if err != nil { |
| | | Die("groutine"+url+"接收响应失败: ", err.Error()) |
| | | } else { |
| | | logger.Debug("事件推送成功!groutine"+url+"收到响应",string(msg)) |
| | | } |
| | | |
| | | default: |
| | | |