Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCP套接字到Websocket?_Websocket - Fatal编程技术网

TCP套接字到Websocket?

TCP套接字到Websocket?,websocket,Websocket,有很多websocket->socket包装器(比如),但是有没有相反的呢?具体来说,我希望能够通过应用程序连接到TCP套接字,并将代理转换为websocket,再转换到另一个websocket服务器 我不完全清楚您在问什么,但WebSocket API主要适用于客户端 如何编写服务器端脚本以及使用什么语言来编写脚本完全取决于您。编写服务器端脚本时,您应该能够选择是否使用TCP套接字等。从WebSocket客户端到TCP服务器的桥接是一种通用解决方案,它将低级TCP协议封装到高级WebSocke

有很多websocket->socket包装器(比如),但是有没有相反的呢?具体来说,我希望能够通过应用程序连接到TCP套接字,并将代理转换为websocket,再转换到另一个websocket服务器

我不完全清楚您在问什么,但WebSocket API主要适用于客户端


如何编写服务器端脚本以及使用什么语言来编写脚本完全取决于您。编写服务器端脚本时,您应该能够选择是否使用TCP套接字等。

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

反向操作不是通用的,需要对从TCP客户端应用程序到网桥的消息进行特殊的帧处理,以便网桥知道如何将WebSocket消息编码到TCP服务器。WebSocket是基于消息的传输,而TCP是较低级别的流传输。TCP传输层在协议本身中没有消息的概念,因此必须在高层进行处理。换句话说,为了使TCP客户端应用程序能够与网桥应用程序通信,您需要做的工作几乎与直接在应用程序中实现WebSocket客户端所需的工作一样多。事实上,直接实现可能比较困难,因为已经有适用于大多数流行语言的WebSocket客户端库

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

也许您可以给出一个您认为有用的用例


免责声明:我制作了websockify。

我不确定你在寻找什么,但为了将来帮助别人,我会写下我为解决问题所做的事情

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

我的解决方案: 我使用node.js模块桥接websocket端口,noVNC客户端将在该端口与vnc tcp服务器的主机连接

例如: 这是通过从vncserver的计算机运行以下命令实现的:

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

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


我没有做过很多测试,但在vnc服务器上运行得很好。

例如,您的websockify在vnc服务器上使用,以利用noVNC。我需要将一个本机客户端连接到该vnc服务器,但只有websockify部分暴露在internet上。因此,看起来我可能真的有我的工作要做答案是,因为它当时最适用。谢谢你的帮助,kanaka。@kanaka,你不是已经在websockify中实现了无边界数据流吗?从TCP服务器返回到浏览器客户端的数据本质上是一个数据流。我希望websockify能够做到这一点,但对s感到失望ee不可能。然后我找到了这个线程。在你的最后一段中,你提到了一个显而易见的用例,它引导我们来到这里——我们不关心websocket特定的消息边界。也就是说,你的评估是错误的。在只需要原始通信流的情况下,使用这样一个反向代理是非常有意义的。@Hyena I'我很想了解更多有关您的用例的信息。如果我了解,您的服务器只能使用WebSocket,但会将负载视为普通TCP,这样,如果数据是WebSocket包装的,常规TCP客户端就可以连接到它(并且在碎片情况下可以容忍任意边界)?这是一个非常奇怪的用例,我很想听到更多关于它的信息(既因为我对此非常好奇,也可能如果我理解“为什么”,我可以提出解决方案)。