首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nodejs+socket.io的websocket服务器不能由测试站点连接,而ws可以

使用nodejs+socket.io的websocket服务器不能由测试站点连接,而ws可以
EN

Stack Overflow用户
提问于 2016-07-31 19:25:40
回答 1查看 678关注 0票数 1

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

我使用nodejs(v4.4.7) (npm install --保存socket.io)试用了socket.io,使用的是它的示例server side code。我有点困惑为什么客户端代码使用"http://“”而不是"ws://“协议,但在我设置了一个真实的服务器进行测试后,我发现"http//”和"ws//“都可以使用官方代码。

到现在为止一切都很好。但很快我发现我无法使用第三方在线测试站点建立连接,例如:

  1. www.websocket.org/echo.html
  2. www.blue-zero.com/WebSocket

这种连接似乎从来没有建立或关闭过,

我在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可以吗?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 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服务器。

您必须匹配:

代码语言:javascript
复制
webSocket client <==> webSocket server
socket.io client <==> socket.io server
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38683462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档