2

我有一个 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();
4

2 回答 2

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);
});
于 2011-05-11T06:38:00.427 回答
2

看起来“问题”最有可能在服务器端。服务器有两种方式向客户端发送消息(发送和广播)。如果你正在做一对一的消息,大多数人使用发射。我假设您构建了一个聊天服务器,用于存储客户端的 sessionId。它适用于初始连接,因为服务器具有正确的 sessionId,但是假设连接丢失并且您重新建立连接,现在服务器尝试向客户端发送消息。如果您的服务器将初始 sessionId 存储在一个数组中,并尝试使用原始 sessionId 发出消息,它将失败,因为重新连接会导致创建新的 sessionId。

这种情况下的解决方案是从数组中删除之前的 sessionId,并在重新连接时添加新的 sessionId。

于 2011-07-03T15:38:32.083 回答