当我快速刷新浏览器时,有时套接字对象不会从数组中删除,如果我离开它一分钟,它会减少到5或6,但永远不会回到1个连接。
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket){
users.push(socket);
var my_index = users.indexOf(socket);
console.log("Im number " + (my_index+1) + " form " + users.length);
var timer = setInterval(function(){
socket.emit('date', {'date': new Date()});
}, 1000);
initSocketData(socket);
socket.on('client_data', function(data){
for (var i = 0, len = users.length; i < len; i++) {
users[i].emit('a_in', {'a_in': data});
}
});
socket.on('disconnect', function(socket){
clearInterval(timer)
if (my_index > -1) {
users.splice(my_index, 1);
}
});
});和控制台输出
$ node socket.js
Im number 1 form 1
Im number 1 form 1
Im number 1 form 1
Im number 1 form 1
Im number 2 form 2
Im number 3 form 3
Im number 4 form 4
Im number 5 form 5
Im number 6 form 6
Im number 6 form 6
Im number 7 form 7
Im number 8 form 8
Im number 9 form 9
Im number 9 form 9
Im number 10 form 10
Im number 11 form 11发布于 2016-05-22 19:34:59
使用sync disconnect on unload标志告诉客户端确实在窗口关闭时发送断开连接包。
io.connect('http://adress/', {'sync disconnect on unload':true});https://stackoverflow.com/questions/37366079
复制相似问题