2016-04-24 66 views
2

每当客户端连接时,我使用socket.id为该客户端分配一个标识,并将其保留在服务器中供将来参考。我现在遇到的问题是断开/重新连接。我甚至不知道如何模拟这种情况,因为如果我重新加载客户端页面,它在技术上会创建一个新的客户端并使用不同的ID连接到服务器。如果我手动断开并连接客户端,则客户端将再次拥有不同的id(socket.id)。如何检测套接字IO中的重新连接事件

我使用socket.on('reconnect',function(){...})在客户端和服务器上设置了'reconnect'事件,但它似乎永远不会被调用,因为我在上面尝试过。

那么你将如何去模拟这种情况呢?然后,检测这个新客户端是否实际上是断开连接的同一客户端的最佳方法是什么?

+0

我有回答这个问题已经存在:http://stackoverflow.com/questions/20260170/handle-browser-reload-socket-io/20261163#20261163 –

+0

谢谢。我实际上已经考虑过这个解决方案,它发出额外的事件来为客户端/服务器设置/识别customID。我相信它应该可以解决我的问题。只是我不知道我是否可以触及重新连接事件,看看它是否建议任何其他解决方案 – rustyengineer

+0

在socket.io中没有'reconnect'事件,我敢肯定你不需要它,当你可以实现它你自己的:) –

回答

0

没有在客户端重新连接事件中,你可以发射到服务器,找到重新连接的客户端

socket.on('reconnect', function() { 
    console.log('you have been reconnected'); 
    // where username is a global variable for the client 
    socket.emit('user-reconnected', username); 
}); 

在服务器上,你可以得到,作为

socket.on('user-reconnected', function (username) { 
    console.log(username + ' just reconnected'); 
});