【问题标题】:Node.js Socket.IO not working completelyNode.js Socket.IO 无法完全工作
【发布时间】:2017-07-21 03:59:14
【问题描述】:

我运行一个独立服务器,它在端口 5000 上进行侦听。当我通过 Netcat 或 Telnet 连接到它时,该应用程序不会在终端上打印任何内容,但在 Netcat/Telnet 应用程序屏幕上,它显示连接已建立.

var io = require('socket.io')();
io.on('connection', function(socket){
console.log('Socket connection established'); 
}); 
io.listen(5000); 
console.log('Listening to port 50000');

【问题讨论】:

  • 这意味着它可以工作。没有?
  • @smit 这意味着,如果它有效,为什么它不在终端上打印任何东西?
  • console.log('Listening to port 50000'); 打印了吗?
  • @Smit 是的,它会打印,但没有打印关于“已建立套接字连接”的信息。这是我的确切问题。
  • 你能分享你的整个服务器.js文件吗?包括requires

标签: node.js sockets socket.io server


【解决方案1】:

Socket.io 是一个 websocket 库。

当您使用 telnet 连接时,它表示您已连接。这足以知道您的服务器正在侦听。

如果您想看到它的实际效果,您必须使用 socket.io 客户端连接到它。为此,只需在 html 文件中包含 /socket.io/socket.io.js

这足以建立连接。

 socket = io.connect('http://localhost:5000');

console.log没有显示的原因是websocket没有连接。只建立了 tcp/ip 连接,这就是 telnet 告诉你的。

【讨论】:

  • Socket.io 不是 WebSocket 的库。它是一个实时双向通信库,支持通过多种传输方式进行通信,默认情况下使用 WebSockets,而是使用 XHR Longpolling。只有在交换双方都支持并且可以成功升级到的情况下,才会使用 WebSocket。
  • @LorenzMeyer 谢谢,您的解决方案有效。现在我知道我的错误是什么了。
  • @peteb 你说得对,'socket.io 不是 websockets 的库'。它用于建立与服务器的持续连接,允许服务器将事件推送到客户端。我不同意“默认情况下不使用 websockets”。如果浏览器支持 websockets,它会使用 websockets,如果 websockets 不可用,它将依赖其他技术,如 xhr longpolling。
  • @LorenzMeyer 说它回退到长轮询是不正确的。它从 longpolling 开始,如果可能会升级到 websockets。
猜你喜欢
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-26
  • 2017-09-10
  • 2021-07-28
  • 1970-01-01
  • 2012-12-03
相关资源
最近更新 更多