| | |
| | | "nanomsg.org/go-mangos/protocol/req" |
| | | "nanomsg.org/go-mangos/transport/ipc" |
| | | "nanomsg.org/go-mangos/transport/tcp" |
| | | "strings" |
| | | "time" |
| | | ) |
| | | |
| | |
| | | if ruleGroup.Enable { // 大规则开关开启状态 |
| | | for _, url := range ruleGroup.Urls { |
| | | // 为每个url建立一个chan |
| | | |
| | | if strings.Contains(url.Url,"102") { |
| | | urlPool[url.Url] = make(chan []byte,10) |
| | | if urlPool[url.Url] == nil { |
| | | urlPool[url.Url] = make(chan []byte,100) |
| | | logger.Info("初始化信息:",urlPool) |
| | | go GoPush(url.Url) |
| | | } |
| | |
| | | logger.Error("传输的数据超过大小限制") |
| | | return |
| | | } |
| | | errTimeOut := sock.SetOption(mangos.OptionRecvDeadline,time.Millisecond * 2000) |
| | | errTimeOut := sock.SetOption(mangos.OptionRecvDeadline,time.Millisecond * 1500) |
| | | if errTimeOut != nil { |
| | | logger.Error("接收响应超时") |
| | | return |
| | | } |
| | | errTimeOut1 := sock.SetOption(mangos.OptionSendDeadline,time.Millisecond * 2000) |
| | | errTimeOut1 := sock.SetOption(mangos.OptionSendDeadline,time.Millisecond * 1500) |
| | | if errTimeOut1 != nil { |
| | | logger.Error("发送超时") |
| | | return |
| | | } |
| | | //errWrite := sock.SetOption(mangos.OptionWriteQLen,10) |
| | | //if errWrite != nil { |
| | | // logger.Error("设置传输缓存大小失败") |
| | | // return |
| | | //} |
| | | //errRead := sock.SetOption(mangos.OptionReadQLen,10) |
| | | //if errRead != nil { |
| | | // logger.Error("设置传输缓存大小失败") |
| | | // return |
| | | //} |
| | | errWrite := sock.SetOption(mangos.OptionWriteQLen,5) |
| | | if errWrite != nil { |
| | | logger.Error("设置传输缓存大小失败") |
| | | return |
| | | } |
| | | errRead := sock.SetOption(mangos.OptionReadQLen,5) |
| | | if errRead != nil { |
| | | logger.Error("设置传输缓存大小失败") |
| | | return |
| | | } |
| | | sock.AddTransport(tcp.NewTransport()) |
| | | if err = sock.Dial("tcp://"+url); err != nil { |
| | | logger.Error("请求socket拨号失败: ", err.Error()) |
| | |
| | | case data := <- urlPool[url]: |
| | | //logger.Info("接收到数据",data.Cid) |
| | | //bytes,err1 := proto.Marshal(data) |
| | | logger.Info("数据长度为:",len(data)) |
| | | //if err1 != nil { |
| | | // logger.Info("序列化失败:",err1) |
| | | //} |
| | | logger.Debug("groutine"+url+"推送数据") |
| | | //bytes := []byte("ndfasojdfaidsos") |
| | | if err = sock.Send(data); 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)) |
| | | } |
| | | |
| | | go func(data []byte) { |
| | | logger.Info("数据长度为:",len(data)) |
| | | //if err1 != nil { |
| | | // logger.Info("序列化失败:",err1) |
| | | //} |
| | | start := time.Now() |
| | | logger.Debug("groutine"+url+"推送数据") |
| | | //bytes := []byte("ndfasojdfaidsos") |
| | | if err = sock.Send(data); err != nil { |
| | | Die("groutine"+url+"推送socket发送数据失败: ", err.Error()) |
| | | } |
| | | pushTime := time.Since(start) |
| | | msg, err = sock.Recv(); |
| | | if err != nil { |
| | | Die("groutine"+url+"接收响应失败: ", err.Error(),pushTime,time.Since(start)) |
| | | } else { |
| | | logger.Debug("事件推送成功!groutine"+url+"收到响应",string(msg),pushTime,time.Since(start)) |
| | | } |
| | | }(data) |
| | | default: |
| | | |
| | | } |