Socket.io离线消息

时间:2017-08-28 21:25:41

标签: ios node.js sockets socket.io

我正在尝试使用socket.io创建移动聊天应用程序。我打算将消息存储在用户手机上的本地数据库中,这样我就不必对我的数据库执行http请求来检索旧消息。我的聊天应用程序包括最多12人的房间。

在socket.io中,我订阅了这样一个房间:socket.join(room并通过它广播消息。我房间里的所有用户和连接到套接字的用户都会收到消息并且一切正常,但是我想实现离线消息传递,所以如果有人没有连接,它会将文本保存到数据库中。我的问题是如何知道哪些用户不在线接收消息,我在加入特定房间时是否通过了房间内的用户?因为目前我不知道如何在我的数据库中保存消息,因为socket不知道房间里但没有连接的人。

1 个答案:

答案 0 :(得分:0)

一种方法是将消息保存到数据库中并在用户连接到房间时获取它(我有一个聊天应用程序,我们这样做。我们使用房间引用将消息保存到mongodb并根据房间ID检索它)。 Socket io不保存任何消息,因此每次用户连接到房间时,您都应该查询数据库并获取所有新消息。由于您拥有移动设备中所有消息的数据库,因此请使用消息的日期来获取所有新消息。

当用户断开连接时,您可以保留用户与房间的参考,只是有一个参考说明连接到这个房间的用户正在离线,并带有一些时间戳。当用户返回时,使用时间戳从其他客户端检索消息并向他发送这些消息