Node.js 套接字io心跳信号未发出

Node.js 套接字io心跳信号未发出,node.js,sockets,websocket,npm,emit,Node.js,Sockets,Websocket,Npm,Emit,当我尝试与socket io通信时,连接已建立,websocket写入正在进行,但服务器上没有发出hearbeat。因此,我在客户端没有收到任何信息。但是,当我再次断开并连接服务器时,旧的书面消息就会发出。请帮我解决这个问题。非常感谢。 我尝试了不同的端口号,但它不起作用 app.js(服务器): var express = require('express'), app = express(), server = require('http').createServer(app

当我尝试与socket io通信时,连接已建立,websocket写入正在进行,但服务器上没有发出hearbeat。因此,我在客户端没有收到任何信息。但是,当我再次断开并连接服务器时,旧的书面消息就会发出。请帮我解决这个问题。非常感谢。 我尝试了不同的端口号,但它不起作用

app.js(服务器):

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(3000);

app.get('/', function(req, res){
    res.sendfile(__dirname + '/index.html');
});


io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
  console.log("Connected");
  });
});
index.html(客户端)


var socket=io.connect();
socket.on('news',函数(数据){
控制台日志(数据);
emit('my other event',{my:'data'});
});

Socket.io可能因防火墙或防病毒而工作不稳定。这实际上是WebSocket的问题

为了解决这个问题,您可以尝试从客户机和服务器之间的传输中排除WebSocket,并在服务器端仅指定XHR长轮询和JSONP(因为这两个是最稳定的):

我还建议您看看。这个框架是由Socket.io作者编写的,作为替代方案,它工作更稳定

诀窍如下:
当Socket.io尝试首先通过WebSocket连接时(当此尝试失败时,用户必须等待大约10秒才能切换到另一个传输),Engine.io尝试通过XHR连接(在100%情况下工作),同时尝试WebSocket连接,如果成功,则切换到WebSocket


编辑:Socket.io版本1.0+构建在Engine.io之上,因此它现在具有上述所有优点。

如果将服务器绑定到端口3000,则必须以以下方式加载Socket.io.js:
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect();
  socket.on('news', function (data) {
    console.log(data);
    socket.emit('my other event', { my: 'data' });
  });
</script>
io.set('transports', ['xhr-polling', 'jsonp-polling']);