TCP Socket到Websocket?

Mor*_*irk 7 websocket

那里有很多websocket - >套接字包装器(比如websockify)但是有相反的可用吗?具体来说,我希望能够使用应用程序连接到TCP套接字,并将代理转换为websocket并转移到另一个websocket服务器.

kan*_*aka 6

从WebSocket客户端到TCP服务器的桥接是一种通用解决方案,它将较低级别的TCP协议封装到更高级别的WebSocket协议中.它允许浏览器(或其他websocket客户端)与任意TCP服务器通信.请注意,客户端(JavaScript)应用程序仍必须能够解码/编码TCP服务器所说的协议.

反向操作不是通用的,需要从TCP客户端应用程序到桥接器的特殊消息框架,以便桥接器知道如何将WebSocket消息编码到TCP服务器.WebSockets是基于消息的传输,而TCP是较低级别的流传输.TCP传输层在协议本身中没有消息的概念,因此必须在高层处理.换句话说,您将不得不做几乎同样多的工作来使您的TCP客户端应用程序与桥接应用程序通信,因为它将直接在您的应用程序中实现WebSocket客户端.实际上,直接实现它可能更少,因为已经有大多数流行语言的WebSocket客户端库可用.

您将无法通过网桥将预先存在的TCP客户端连接到现有的WebSocket服务器而无需更改客户端和网桥(添加消息边界和操作码信息),或者您将需要一个忽略WebSiocket的特殊WebSocket服务器消息边界并将传入的数据视为流(在更高层处理消息解析).

也许您可以给出一个用例,您认为这可能有用吗?

免责声明:我做了websockify.

  • 好吧,例如,您的 websockify 用于在 VNC 服务器上使用 noVNC。我实际上需要将本机客户端附加到该 VNC 服务器,但只有 websockified 部分暴露在互联网上。所以看起来我可能真的为我剪掉了我的工作.. (2认同)
  • @kanaka,你不必在websockify中实现非边界数据流吗?从TCP服务器返回到浏览器客户端的数据本质上最初是数据流. (2认同)

小智 6

我不确定您在寻找什么,但如果将来对某人有帮助,我会写下我为解决问题所做的工作。

我的问题: 我希望能够在我的 Web 应用程序的服务器上托管 noVNC,并且我希望非 websocket vnc 服务器能够在不使用 websockify 的情况下理解它。

我的解决方案: 我使用ws-tcp-bridge node.js 模块来桥接 websocket 端口<--lport>,noVNC 客户端将连接到 vnc tcp 服务器的主机。

示例: 这是通过从 vncserver 的机器运行以下命令来实现的:

ws-tcp-bridge --method=ws2tcp --lport=5555 --rhost=127.0.0.1:5902

这样我就能够在端口上托管一个非 websocket vncserver5902并通过端口上的 noVNC 与它连接5555

尚未对此进行过多测试,但在x11vnc vnc 服务器上运行良好。