我正在 node.js+mongo db 中计划一个 TCP 聊天服务器。这是我对架构的想法 -
- 在 mongo db "online_users" 中创建一个集合,该集合将包含所有在线用户,一旦用户下线,我将从该集合中删除这些用户。
- 创建一个集合“房间”..在这个集合中我打算存储房间名称(由房间中的用户名 csv 组成)和这个房间的参与者..
- 用于存储用户聊天记录的历史记录集合。
现在我正在考虑在“房间”集合中的数据库中存储套接字连接,但我不确定是否应该这样做或将套接字连接存储在数组中?
这是我在想的数据库流程-
如果用户 A 开始与 B 和 C 聊天,那么我将创建一个新房间“A,B,C”。我会将此房间名称发送给客户端,聊天客户端在发送新的聊天消息时必须传递此房间名称。当用户在聊天中发送消息时,我将检查他们在哪个房间,并从数据库中获取每个人的套接字连接,并将该消息广播给 B 和 C。
请注意,我是 node.js 和聊天服务器的新手,因此我愿意接受有关架构的任何建议。此外,如果您有任何 TCP 聊天服务器架构/聊天服务器数据库架构的链接..那么请在您的评论/答案中分享。
任何帮助我都会非常感激!
更新 1:我也不确定我是否可以将套接字对象存储在数据库中 :( .. 序列化可能有效?也让我知道这方面的想法。