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

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

阅读 2.9k
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之间在进行交互了
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进