0

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

4

3 回答 3

0

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

你可以试试express.js

于 2018-06-14T21:58:10.033 回答
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 数据帧格式之上添加自己的更高级别的数据包格式。

因此,只有使用支持的传输(通常是 webSocket)的 socket.io 客户端才能连接到 socket.io 服务器。您不能使用 webSocket 客户端连接到 socket.io 服务器。您不能使用普通的 TCP 客户端。您不能使用 HTTP 客户端。

于 2018-06-15T04:45:48.117 回答
0

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

于 2019-04-25T16:34:28.730 回答