使用nodejs + socket.io的websocket服务器不能通过testing站点连接,而ws可以
我想创build一个websocket服务器。 我听说socket.io是一个不错的select。
我用nodejs(v4.4.7)(npm install –save socket.io)尝试socket.io,使用它的示例服务器端代码 。 有一点困惑,为什么客户端代码使用“http://”而不是“ws://”协议,但是在我设置了一个真正的服务器进行testing之后,我发现“http //”和“ws //”将使用官方代码工作。
一切都很好,直到现在。 但很快我发现我不能使用第三方在线testing站点build立连接,如:
1. www.websocket.org/echo.html
2. www.blue-zero.com/WebSocket
连接似乎从来没有build立或closures尽快连接,
在Firefox控制台中,我发现“Firefox无法在ws:// mytestserver:8888 /?encoding = text中build立与服务器的连接”
或“WebSocket连接到'ws:// mytestserver:8888'失败:连接在收到握手响应之前closures”。
最后我把socket.io改成了ws(npm install –save ws)。 使用来自github.com/websockets/ws的示例代码。 所有testing站点运行良好。
(当然,我的最终目的不是让一个testing者站点工作,事实上,基于集成在我的芯片中的nopoll的websocket lib与testing者站点具有完全相同的行为。)
有谁知道为什么socket.io不能与第三方客户端同时工作吗? 非常感谢。
socket.io
在服务器端需要一个socket.io服务器端。 它不会连接到只有一个webSocket服务器。
虽然socket.io使用webSocket作为底层传输,但它在webSocket之上添加了一层来实现一大堆附加function ,并且需要服务器端对socket.io的支持。 所以,你不能用socket.io客户端连接到一个普通的webSocket服务器。
你必须匹配:
webSocket client <==> webSocket server socket.io client <==> socket.io server
- 创build一个文件对象或Blob
- 如何将第三方Javascript文件导入到IntelliJ中,以便我可以在一个Typescript文件中引用它
- 类“Observable <T>”定义了实例成员属性“select”,但扩展类“Store <T>”将其定义为实例成员函数
- 错误:在将nodejs应用程序推送到heroku上时找不到模块“mkdirp”
- array()函数返回一个对象 – Node.js Discord.js
- 咕噜需要configuration属性丢失
- 在Mac OSX 10.5上运行Node.js或NPM时,“处理内存不足”
- 核心转储文件由“node –abort-on-uncaught-exception”定位在哪里?
- testing一个受保护的API调用,摩卡,supertest,节点js,护照