【发布时间】:2018-02-06 05:32:48
【问题描述】:
我正在尝试使用 socket.io 创建一个移动聊天应用程序。我计划将消息存储在用户手机上的本地数据库中,这样我就不必对我的数据库执行 http 请求来检索旧消息。我的聊天应用程序包含最多 12 人的房间。
在 socket.io 中,我订阅了一个像这样的房间:socket.join(room 并通过它广播消息。我房间中并连接到套接字的所有用户都会收到消息,并且一切正常,但是我想实现离线消息传递,因此如果有人没有连接,它会将文本保存到数据库中。我的问题是我如何知道哪些用户没有在线接收消息,当我加入特定房间时,我是否通过房间中的用户?因为目前我不知道如何在我的数据库中保存消息,因为 socket 不知道房间里但未连接的人。
【问题讨论】:
-
您将不必依赖 socket.io 来跟踪房间,因为当用户离线时,它会将用户从房间中移除。相反,房间必须是您保存在数据库中的东西,当用户上线时,您在数据库中查找他们并将他们加入他们应该在的任何 socket.io 房间。同样,当您发送消息时对于一个房间,您必须在数据库中查找该房间,如果该用户当前不在线,则将消息添加到数据库中该用户的消息队列中。
标签: ios node.js sockets socket.io