以下是使用socket.io rooms
USERS TABLE
------------
id name
1 bar
2 foo
3 clay
假设用户bar
想要与foo
socket.join(1);
socket.join(2);
发送消息后,用户ID被用作接收者ID,以便我可以轻松发送消息
socket.on('chat', function(data){
//data object contains other user id as receiver id
io.sockets.in(data.receiverId).emit('chat',{
message:data.message,
created_at:new Date()
});
});
这样可以正常工作但我需要一个条件,一次用户只能与用户聊一次。
如果clay
向bar
发送消息,bar
可以读取该消息,那么我该怎样才能避免此问题
答案 0 :(得分:0)
无法将消息发送给房间中的特定人。当您在会议室中发出任何事件时,会议室中所有连接的人都会发出它。
在此,我举一个示例,介绍如何加入会议室以及如何在该会议室中发出事件。
// Server Side
// connection is inbuilt event of socket
io.on('connection', (socket)=>{
// Every time it generates new id when user is connected to socket.
console.log(socket.id, "is connected");
socket.join("RoomName");
// Here, message is an event name and you can pass your data in second parameter
io.in("RoomName").emit("message", {"data": "Hello All!"});
}
答案 1 :(得分:0)
尝试使用to
作为目标套接字客户端ID
// sending to individual socketid (private message)
io.to(`${socketId}`).emit('hey', 'I just met you');