Javascript Socket.io断开事件在长时间后触发
我只是想用Socket.io创建一个简单的应用程序。我试图向所有连接的用户发送一个通知(从技术上讲,是发出一个事件),如果某个特定的用户,即用户X已断开连接,该用户X已离开或已断开连接。 这是我的服务器端代码Javascript Socket.io断开事件在长时间后触发,javascript,node.js,socket.io,ionic-framework,Javascript,Node.js,Socket.io,Ionic Framework,我只是想用Socket.io创建一个简单的应用程序。我试图向所有连接的用户发送一个通知(从技术上讲,是发出一个事件),如果某个特定的用户,即用户X已断开连接,该用户X已离开或已断开连接。 这是我的服务器端代码 io.on('connection', function(socket){ console.log('Connected! ' + socket.id); socket.on('disconnect', function(){ for(var i=0;i<onlineUsers
io.on('connection', function(socket){
console.log('Connected! ' + socket.id);
socket.on('disconnect', function(){
for(var i=0;i<onlineUsers.length;i++)
{
if(onlineUsers[i].socketId == socket.id)
{
var newMessage = {};
newMessage.socketId = onlineUsers[i].socketId;
newMessage.fullName = onlineUsers[i].fullName;
newMessage.message = newMessage.fullName + " IS DISCONNETED!";
io.emit('newMessage', newMessage);
onlineUsers.splice(i,1);
console.log('splicing id ' + socket.id);
}
}
}
io.on('connection',函数(socket){
console.log('Connected!'+socket.id);
socket.on('disconnect',function()){
对于(var i=0;默认情况下,iSocket io应每15秒发送一次心跳(aka ping)信号。如果客户端未能响应,则视为已断开连接。此外,当客户端发送TCP关闭数据包时(即,当客户端正常断开连接时)。但是2分钟的延迟似乎太长了。但可能是网络延迟?如何填写online users
数组?我想我们需要更多详细信息,代码似乎还可以。其余的代码工作得很好。我今天添加了这条新消息和所有5行。online users数组是在连接事件时填写的。