如何处理websokcet和tcp端对端的问题?

我现在服务器上建立了个tcp服务,这个tcp服务主要负责设备端的数据交流和websocket服务器的数据交互,也就是相当于这个tcp做的是消息转发。当我的websocket服务器被触发了onMessage事件,我就会建立一个协程tcp客户端并和tcp服务器建立长连接。 但是这个协程客户端只会给tcp发送一条请求,而tcp服务需要源源不断的接收设备的数据并且把数据发送到协程tcp客户端。我如何处理tcp服务端一直源源不断的把数据丢给协程tcp客户端呢?最后协程tcp客户端还要把数据推到websocket客户端。

阅读 657
评论 2019-03-19 提问
    3 个回答

    tcp客户端写一个for循环 read再把数据放到buf,最后tcp服务端可以发送一个结束标志位,或者客户端根据业务逻辑close,最后再推送给websocket,伪代码:

    for {
        var buf
        tcp_client.read(buf)
        if xxx { break }
    }
    websocket_client.send(server, buf)
    tcp_client.close()

      看你的目的是想: tcp服务器 发消息个给websocket客户端。
      直接发就好了 不需要tcp client中转。
      在tcp server 添加一个websocket监听就好了

        这个就是复合协议开发

        • 使用 websocekt_server 作为主服务
        • 在监听 lisen tcp
        • 这样你的服务就可以对外提供 tcp 和websocket。使用同一个server
        • 直接在server里就可以进行数据操作了,不需要tcp 和 websocket之间在进行交互了
          撰写回答

          登录后参与交流、获取后续更新提醒