2014-09-03 71 views
0

您好,我目前正在研究某种“聊天”系统。socket.io在发送到特定客户端后断开连接NODE javascript

服务器:用的NodeJS快递 - HTTPS 通讯:[email protected]

客户端:

var socket = io.connect(); 
socket.emit('HELLO', {user:'someuserid'}); 
socket.on('WELCOME', function(data){ 
    socket.emit('REGISTER', {}); 
}); 
socket.on('SIGNED', function(data){ 
    console.log(data.user); 
    socket.emit('GO', {}); 
}); 
socket.on('message', function(data){ 
    console.log(data.somedata); 
}); 

服务器:

io.sockets.on('connection', function(socket){ 
    socket.on('HELLO', function(data){ 
     socket.user = data.user; 
     socket.emit('WELCOME', socket.user); 
    }); 
    socket.on('REGISTER', function(data){ 
     console.log('room: '+socket.user); 
     socket.join(socket.user); 
     socket.emit('SIGNED', socket.user); 
     console.log('SIGNED IN: '+socket.user); 

    }); 
    socket.on('GO', function(data){ 
     //some logic happens where a list of users gets loaded 
     //which is identical to the socket.user and its room 
     //... loop 
     io.in(partners[i].user).emit('message', { somedata: 'asd' }); 
    } 

    socket.on('disconnect' ..... blaaa blaa) 

所以,basicly我想在这里做是通过向特定房间发送消息来创建一种解决方法,以便将消息发送给特定用户。

此:

io.in(partners[i].user).emit('message', { somedata: 'asd' }); 

和此:

partners[i].socket.emit('message', { somedata: 'asd' }); 

结果在相同的:

room: 540246a3e4b0a64a28e1ec59 
SIGNED IN: 540246a3e4b0a64a28e1ec59 
room: 540504ba0b526b274398480e 
SIGNED IN: 540504ba0b526b274398480e 
to: 540246a3e4b0a64a28e1ec59 
disconnected:540246a3e4b0a64a28e1ec59 

用户寄存器,获取连接并希望发出一个消息给特定chatpartners在阵列合作伙伴[我]。

一旦EMIT被激发用户,假设该消息被发射到断开......

我究竟做错了什么?

(脚本显然是不完整的。我贴的最重要的部分)

感谢您的帮助。

回答

1

我觉得我已经找到了解决方案:

有时使用谷歌比自己调试更费力。

滚动浏览firefox中的调试日志后,我发现这个问题实际上与我的套接字'消息'处理程序中的代码有关。一个片段,可以帮助他人找到错误与他们的插座:

socket.on('error', function (err) { 
    if (err.description) throw err.description; 
    else throw err; // Or whatever you want to do 
}); 

我觉得这是一个问题socket.io 虽然这是我的错编码 - socket.io的ErrorHandler应该已经过去了,通过。

玩得开心

相关问题