node.js - Node Socket.io客户端连接后认为已断开连接

标签 node.js sockets socket.io

我的套接字将连接,但无法接收任一方向的消息。我设置了如下所示的日志记录。在服务器端,我看到正在记录连接,并在页面关闭时记录断开连接。如果我终止服务器,客户端会记录“套接字已断开”。但没有收到任何方向的排放。我做了更多日志记录,并确定客户端套接字的 socket.connected 字段为 false

此时我完全不知所措。从字面上看,一旦我建立连接,客户端就会认为其套接字已断开连接,但当我关闭浏览器窗口时,服务器仍然看到它已断开连接。我正在运行 socket.io 1.1.0。感谢您的帮助!

服务器:

io.sockets.on('connection', function(socket) {
  logger.info('Socket connected. ID: ' + socket.id);

  socket.on('refresh', function() { 
    logger.info('Refresh received from ID: ' + socket.id);
  });
  socket.on('disconnect', function() { 
    logger.info('Disconnect received from ID: ' socket.id);
  });
});

客户:

var socket;
$(document).ready(function() {
  socket = io.connect('http://localhost');
  console.log(socket.connected);

  socket.emit('refresh');

  socket.on('disconnect', function() {
    console.log("Socket disconnected.");
  });
});

最佳答案

套接字在io.connect之后并未立即连接。您必须等待:

var socket;
$(document).ready(function() {
  socket = io.connect('http://localhost');


  socket.on('connect', function () {
    console.log(socket.connected);
    socket.emit('refresh');
  });

  socket.on('disconnect', function() {
    console.log("Socket disconnected.");
  });
});

更多事件:http://socket.io/docs/client-api/#manager(url:string,-opts:object)

关于node.js - Node Socket.io客户端连接后认为已断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482206/

相关文章:

Linux - 没有可用的缓冲区空间 - 这是什么意思,我如何确定可用空间,以及如何阻止它耗尽空间?

node.js - socket.io 与 Rest api 之间的资源比较

node.js - 为什么 "npm install -g web3"对 web3js 不起作用?

node.js - 如何获取 Kubernetes 集群上所有正在运行的 POD

node.js - NPM 在公司防火墙后面安装任何包时抛出错误 unable_to_get_issuer_cert_locally

node.js - 将 HTTPS 分配给 node.js socket.io

Node.js、Socket.io 多用户应用程序——存储用户 session ?

node.js - Dockerfile 公开 Node.js 镜像的端口

c++ - 如何使用 cppzmq 从 ROUTER 套接字向特定的 DEALER 套接字发送 ZeroMQ 消息?

C++发送UDP广播