将Nodejs tcp服务器连接到websockit

时间:2018-06-14 21:52:15

标签: node.js websocket socket.io websockify

我尝试使用javascript中的websockify将我的节点tcp服务器连接到我的socket.io服务器。我在https://github.com/novnc/websockify/wiki/websock.js找到了它的git repo ,但似乎无法找到如何在代码中启动它。任何人都可以提供一个例子或指向我的js版本的某种文档?另外,当我从npm下载websockify时,我没有收到websock.js,如果有人能告诉我怎么做,我也会感激它。

3 个答案:

答案 0 :(得分:0)

Websocket需要HTTP(s)服务器。您无法将其连接到TCP服务器。

您可以尝试express.js

答案 1 :(得分:0)

socket.io服务器只能与socket.io客户端通信。因此,您无法将纯TCP服务器连接到socket.io服务器。要连接到socket.io服务器,您需要一个socket.io客户端。您当然可以获取node.js的socket.io-client,然后可以使用它连接到socket.io服务器。

让我解释一下。 socket.io建立在webSocket之上,并且在webSocket之上有自己的连接启动。 webSocket使用HTTP启动连接,然后在某些连接握手切换到webSocket协议之后。如果缺少任何这些部分,连接将无法建立和/或在连接后立即关闭。

因此,要连接到socket.io服务器,必须执行以下所有操作:

  1. 必须启动socket.io客户端连接请求。
  2. 这将向socket.io服务器发出HTTP请求并发送一些自定义数据。
  3. 在一些初始来回之后,socket.io客户端将启动webSocket连接作为主要传输。
  4. 该webSocket连接将以自定义HTTP请求开始,该请求具有指定“升级”到webSocket协议的请求的升级标头,并且还将包含webSocket安全性中使用的一些自定义标头。
  5. 服务器肯定地响应升级请求,并返回一些与安全相关的标头。
  6. 协议从HTTP切换到webSocket。
  7. 此套接字上的所有通信现在都使用webSocket数据帧格式和关联的webSocket安全性。
  8. 现在,当socket.io想要通过此连接发送数据时,它会在webSocket数据帧格式之上添加自己的更高级别的数据包格式。
  9. 因此,只有使用支持的传输(通常是webSocket)的socket.io客户端才能连接到socket.io服务器。您不能使用webSocket客户端连接到socket.io服务器。您不能使用普通的TCP客户端。您无法使用HTTP客户端。

答案 2 :(得分:0)

此外,您不能使用webSocket代理(看起来像websockify一样)连接到socket.io服务器。 webSocket客户端无法连接到socket.io服务器。 – jfriend00