socket.io私人聊天:一次只能进行一对一的聊天

时间:2018-06-19 10:53:38

标签: javascript node.js socket.io

以下是使用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()
            });
});

这样可以正常工作但我需要一个条件,一次用户只能与用户聊一次。

如果claybar发送消息,bar可以读取该消息,那么我该怎样才能避免此问题

2 个答案:

答案 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');

引用:https://socket.io/docs/emit-cheatsheet/