2011-10-31 26 views

回答

21

使用Socket.IO,您不仅限于在连接函数的回调中使用套接字对象。您可以创建一个对象,该对象存储特定用户名的套接字对象,并查找套接字以在客户端发出消息时发送消息。您需要传输每个消息的预期目标。

实施例:

var sockets = {}; 

... 

io.on('connection', function(socket){ 
    socket.on('set nickname', function (name) { 
     sockets[name] = socket; 
    }); 
    socket.on('send message', function (message, to) { 
     sockets[to].emit(message); 
    }); 
}); 

见关于examples page of Socket.IO's website更多的例子。

+0

很大,这是解决 –

+0

如何处理“到”是不属于任何的绰号?例如;昵称“A”发送消息给昵称“B”,昵称“B”发送消息给昵称“C”。并没有昵称“C”然后给错误=“无法读取属性'发射'未定义的” – drojokef

0

您可以检查所有类似插座的用户名属性:

socket.on('send message', function(message,to){ 

    io.sockets.clients().forEach(function (socket) { 

     if (socket.username==to){socket.emit(message);} 

    }); 

}); 
相关问题