我有一个socket.io连接来连接服务器和客户端,
它工作正常。
现在,当我尝试重新连接它与服务器断开连接时,它会连接,但然后socket.on('message'
不再被解雇。
我从服务器端检查了它正在推送该消息。
请给我一些建议我现在没有想法
我确信问题出在客户端socket.on message
客户端代码
var socket = new io.Socket('some host name',{port:80,rememberTransport:true});
socket.on('connect', function(){
clearInterval(socketInterval);
});
socket.on('message', function(obj)
{
alert("meg from server");
});
socket.on('disconnect', function()
{
socketInterval=setInterval("socket.connect()",5000);
});
socket.connect();
答案 0 :(得分:5)
我不知道node.js,但它看起来像语法错误,你有没有忘记正确的做法?
socket.on('connect', function(){
clearInterval(socketInterval);
});
socket.on('message', function(obj)
{
alert("meg from server");
});
socket.on('disconnect', function()
{
socketInterval=setInterval("socket.connect()",5000);
});
答案 1 :(得分:2)
似乎“问题”很可能是在服务器端。服务器有两种向客户端发送消息的方式(发送和广播)。如果您正在执行一对一消息,则大多数人使用emit。我假设您构建了一个存储客户端sessionIds的聊天服务器。它与初始连接工作正常,因为服务器具有正确的sessionId,但是假设连接丢失并且您重新建立连接,现在服务器尝试向客户端发送消息。如果您的服务器存储了初始sessionId(例如在数组中)并尝试使用原始sessionId发出消息,则它将失败,因为重新连接会导致创建新的sessionId。
这种情况下的解决方案是从数组中删除先前的sessionId,并在重新连接时添加新的sessionId。