我使用socket.io时遇到socket.emit的问题。我有一个连接客户端的对象,当我使用socket.emit向特定客户端发出消息时,它会发出两次! 任何解决方案。
这是代码。
var clients ={};
io.sockets.on('connection',function(socket){
socket.on('verifyId',function(data){
clients[data.user_id]=[];
clients[data.user_id].push(socket);
});
socket.on('saveConverse',function(data){
user1=clients[data.to];
if(clients[data.to])
user1[0].emit('newMessage',{msg:'hi, here is a new message!'});
//here it is emitted two times.
});
});
答案 0 :(得分:0)
尝试替换
user1[0].emit('newMessage',{msg:'hi, here is a new message!'});
用这个:
io.sockets.socket(socketid).emit('newMessage',{msg:'hi, here is a new message!'});
因为这是向特定客户发出的正确方法。 ASLO,
您可以clients
在socket.id
数组中保存套接字ID而不是整个套接字对象。