我们如何获取当时离线的消息?假设人们在一个小组中,并且他们在一起聊天。我是刚刚加入的人,或者我是目前为止一直离线的人,但是现在我在线,并且想要获取已经发送的消息。
我是在私人聊天中完成此操作的,但是对于一个小组来说,这里有房间,而且有所不同。 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);
});
});
答案 0 :(得分:0)
您必须在数据库中创建一个缓冲区,用于存储私下或成组发送的来自不同用户的所有消息对象。当客户端连接时,从客户端请求缓冲区并接收所有消息。根据客户端上的用户和组显示它们。客户端成功发出请求后,清除缓冲区。