我知道如何发送消息localy和广播socket.broadcast.emit()
功能: - 所有连接的客户端都收到相同的消息。
现在,我想知道如何向特定客户端发送私人消息,我的意思是一个套接字用于2人之间的私人聊天(客户端到客户端流)。感谢。
答案 0 :(得分:1)
服务器端:
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。
user和private_message应该同步发出。
答案 1 :(得分:0)
确定:简单,
这就是你需要的:
io.to(socket.id).emit("event", data);
每当用户加入服务器时,都会生成包含ID的套接字详细信息。这个ID确实有助于向特定人员发送消息。
首先我们需要将所有socket.id存储在数组中,
var people={};
people[name] = socket.id;
此处名称是接收者名称。例如:
people["trojan"]=2387423cjhgfwerwer23;
所以,现在我们可以在发送消息时使用接收者名称获取socket.id:
为此我们需要知道recievername.You需要向服务器发出接收者名称。
最后一件事是:
socket.on('chat message', function(data){
io.to(people[data.reciever]).emit('chat message', data.msg);
});
希望这适合你。!!祝你好运