我想创建一个websocket服务器。我听说socket.io是个不错的选择。
我使用nodejs(v4.4.7) (npm install --保存socket.io)试用了socket.io,使用的是它的示例server side code。我有点困惑为什么客户端代码使用"http://“”而不是"ws://“协议,但在我设置了一个真实的服务器进行测试后,我发现"http//”和"ws//“都可以使用官方代码。
到现在为止一切都很好。但很快我发现我无法使用第三方在线测试站点建立连接,例如:
这种连接似乎从来没有建立或关闭过,
我在Firefox控制台中发现"Firefox无法建立到服务器的连接,地址为ws://mytestserver:8888/?encoding=text“,
或者在Chrome控制台中"WebSocket连接到'ws://mytestserver:8888‘失败:在收到握手响应前关闭连接“。
最后,我将socket.io更改为ws (npm install --save ws)。使用来自github.com/websockets/ws的示例代码。所有测试站点都工作得很好。
(当然,我的最终目的不是让测试站点工作。事实上,集成在我的芯片中的基于nopoll的websocket库具有与测试站点完全相同的行为。)
有人知道为什么socket.io不能与第三方客户端一起工作,而ws可以吗?非常感谢。
发布于 2016-08-01 01:01:50
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 serverhttps://stackoverflow.com/questions/38683462
复制相似问题