Node.js socket.io-断开事件不发生';在xhr轮询中不触发
在socket.io中,当传输xhr轮询处于活动状态时,不会触发断开连接事件。 如果我将传输切换到websockets,它可以正常工作,但在xhr轮询中,它不起作用Node.js socket.io-断开事件不发生';在xhr轮询中不触发,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,在socket.io中,当传输xhr轮询处于活动状态时,不会触发断开连接事件。 如果我将传输切换到websockets,它可以正常工作,但在xhr轮询中,它不起作用 /* Basics */ var express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io').listen(server); serv
/* Basics */
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
server.listen(1337, null);
io.set('transports', ['xhr-polling']);
// routing
app.get('/', function (req, res) {
res.sendfile("index.html");
app.use(express.static(__dirname));
});
io.sockets.on('connection', function (socket)
socket.on('disconnect', function() {
console.log('LOL');
});
});
在以下代码中,断开连接不会触发,但如果我删除该行-io.set('transports',['xhr-polling'])代码>
它工作得很好,那么为什么它不能与xhr轮询一起工作呢?但只使用WebSocket?
我怎样才能解决这个问题?我错过什么了吗
提前感谢;) 使用XHR轮询不可能立即检测到断开连接,因为客户端会为每条消息重复连接
io通过在xhr轮询套接字上设置非活动超时来解决此问题
这是相关文件:
请参阅心跳间隔
配置选项。默认值为25秒
Websocket在浏览器和服务器之间维护一个持久的tcp套接字,因此socket.io通常可以在套接字断开连接时立即检测。我也遇到了同样的问题,然后我在客户端套接字中使用了选项{'sync disconnect on unload':true}:
var socket = io.connect('http://yourServerDomain.com', {'sync disconnect on unload' : true});
它强制套接字立即发送断开连接事件。我也需要这个问题的答案。这与这个答案有关吗?