gpt4 book ai didi

node.js - 使用nodejs+socket.io的websocket服务器无法被测试站点连接,而ws可以

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:44 24 4
gpt4 key购买 nike

我想创建一个 websocket 服务器。我听说socket.io是一个不错的选择。

我尝试使用nodejs(v4.4.7)(npm install --save socket.io)来使用socket.io,使用其示例server side code 。有点困惑为什么客户端代码使用“http://”而不是“ws://”协议(protocol),但是在我设置真实服务器进行测试后,我发现“http//”和“ws//”将使用官方代码工作。

到目前为止一切都很好。但很快我发现我无法使用第三方在线测试网站建立连接,例如:
1.www.websocket.org/echo.html
2.www.blue-zero.com/WebSocket

连接似乎从未建立或关闭尽快连接,
我在 Firefox 控制台中发现“Firefox 无法与 ws://mytestserver:8888/?encoding=text 处的服务器建立连接”,
或 Chrome 控制台中的“与‘ws://mytestserver:8888’的 WebSocket 连接失败:连接在收到握手响应之前已关闭”。

最后我将socket.io更改为ws(npm install --save ws)。使用 github.com/websockets/ws 中的示例代码。所有测试站点都运行良好。

(当然,我的最终目的不是让测试站点正常工作。事实是我的芯片中集成的基于 nopoll 的 websocket 库与测试站点具有完全相同的行为。)

有人知道为什么 socket.io 不能与第三方客户端一起使用而 ws 可以吗?多谢。

最佳答案

socket.io 需要在服务器端有一个 socket.io 服务器。它不会仅连接到 webSocket 服务器。

虽然socket.io使用webSocket作为底层传输,但它在webSocket之上添加了一层来实现whole bunch of additional features这需要服务器端对 socket.io 的支持。因此,您无法使用 socket.io 客户端连接到普通的 webSocket 服务器。

您必须匹配:

webSocket client <==> webSocket server
socket.io client <==> socket.io server

关于node.js - 使用nodejs+socket.io的websocket服务器无法被测试站点连接,而ws可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com