Socket.io 插座io广播、房间和确认功能
我们正在研究聊天应用程序的套接字io实现。 寻找确认支持以处理广播时丢失的消息我们正在寻找确认支持。 根据文档,socket io不支持广播/会议室中的回调 e、 在“房间1”中,我们向该房间内的所有插座发送广播信息。我们如何在没有回拨的情况下检查某些用户/套接字是否错过了消息。我们将如何在系统中处理这个问题 下面的代码不起作用Socket.io 插座io广播、房间和确认功能,socket.io,Socket.io,我们正在研究聊天应用程序的套接字io实现。 寻找确认支持以处理广播时丢失的消息我们正在寻找确认支持。 根据文档,socket io不支持广播/会议室中的回调 e、 在“房间1”中,我们向该房间内的所有插座发送广播信息。我们如何在没有回拨的情况下检查某些用户/套接字是否错过了消息。我们将如何在系统中处理这个问题 下面的代码不起作用 io.sockets.in(data.room).emit('message', data, function(responseData){ c
io.sockets.in(data.room).emit('message', data, function(responseData){
console.log(responseData);
});
根据以下问题
广播时不支持回调
处理此场景的其他方法有哪些。为了解决您的问题,需要将房间的消息保存在某个位置,然后根据需要重新发送给各个客户端 存储消息最明显的地方是服务器端,即数据存储区(如Redis)。将每个对话有效地存储为事件列表,并在发生新事件时添加新事件 一个简单的方案如下所示:
- 每个广播消息都附加了一个UUID。当服务器处理新邮件时,它会将该邮件附加到该“文件室”的列表中
- 当客户端连接/重新连接时,它会发送一条消息(例如“LAST_message_RECEIVED”),指示它接收的最后一条消息的UUID
- 当服务器收到其中一条“LAST_MESSAGE_RECEIVED”消息时,它会检查这是否是房间的最新消息,如果不是,它会向单个套接字发送一条消息,其中包含一组丢失的消息。客户端现在是最新的