如何接收先前在组中发送的消息(socket.io)

时间:2019-09-30 06:23:46

标签: javascript react-native websocket socket.io

我们如何获取当时离线的消息?假设人们在一个小组中,并且他们在一起聊天。我是刚刚加入的人,或者我是目前为止一直离线的人,但是现在我在线,并且想要获取已经发送的消息。

我是在私人聊天中完成此操作的,但是对于一个小组来说,这里有房间,而且有所不同。 p2p聊天的示例我将消息保存到数组变量,然后在发送特定消息后将其删除。

出了什么问题?

问题是对于p2p聊天,我们可以将消息发送到特定的套接字ID,但是对于一个房间,如果我们发送消息,则其他人会收到重复的消息。

代码:

groupchat.on('connection', cs => {

    cs.on('joinmultiple', rooms =>  {
        for (let room in rooms) cs.join(room);
    });

    cs.on('leaveultiple', rooms =>  {
        for (let room in rooms) cs.leave(room);
    });

    cs.on('setmessage', data => {
        cs.to(data.room).emit('getmessage', data);
    });

});

1 个答案:

答案 0 :(得分:0)

您必须在数据库中创建一个缓冲区,用于存储私下或成组发送的来自不同用户的所有消息对象。当客户端连接时,从客户端请求缓冲区并接收所有消息。根据客户端上的用户和组显示它们。客户端成功发出请求后,清除缓冲区。