我知道如何在本地发送消息和广播socket.广播. emit()
函数:-所有连接的客户端都会收到相同的消息。
现在,我想知道如何向特定客户发送私人消息,我的意思是一个套接字用于2人之间的私人聊天(客户端到客户端流)。谢谢。
服务器端:
var usersConnectedTo = {};
io.on('connection', function(socket){
socket.on('set_socketid', function(user){
usersConnectedTo[user] = socket.id; // if usersConnectedTo[user] is undefined
});
socket.on('private_message', function(private_msg){
var id = usersConnectedTo[private_message.user];
io.to(id).emit('private_message', private_message.msg);
});
});
客户端:
io.emit('user', user1+user2); // user should be such that when A connects to B for
// first time or B connects to B for first time, it should always return same user.
io.emit('private_message', {
user: user1+user2,
msg: 'private_msg'
});
usersConnectedTo变量存储每个私人聊天的socketid。
为了保存(A,B)和(A,C)之间聊天的不同socket.id,socket.id保存为AB和AC。
用户和private_message应该同步发出。
当然:简单地说,
这就是你需要的:
io.to(socket.id).emit("event", data);
每当用户加入服务器时,将生成包括ID在内的套接字详细信息。这是真正有助于向特定人员发送消息的ID。
首先我们需要将所有socket. id存储在数组中,
var people={};
people[name] = socket.id;
这里name是收件人名称。示例:
people["trojan"]=2387423cjhgfwerwer23;
所以,现在我们可以在发送消息时使用收件人名称获取该socket.id:
为此,我们需要知道recievername.You需要向服务器发出接收者名称。
最后一件事是:
socket.on('chat message', function(data){
io.to(people[data.reciever]).emit('chat message', data.msg);
});
希望这对你有用祝你好运