1

我正在尝试使用 Express、Socket.io 和 MongoDB(通过 mongoose / node mongo 本机驱动程序)创建一个基于 Node.js 的应用程序。

我的问题是,除了通过 WebSockets 建立与客户端的连接外,我还获得了其他信息,即存储和处理将是数据库中最好的。然后随着事件的到来,我正在寻找基于附加信息的客户端,并通过套接字向这些客户端发送通知。

我的问题 - 是否有可能将通过套接字连接创建的对象存储到数据库?

如果没有,我的想法是将它们与一个附加变量一起存储在一个数组中,这将允许他们通过在数据库中找到的项目来查找附加信息。我对吗?

客户端 --> 创建连接 --> 发送数据 --> 服务器 --> 在数据库中搜索匹配数据 --> 将套接字匹配到建立的数据 --> 通过建立的套接字发送通知

真挚地

4

3 回答 3

3

For anybody who comes across this via Google, it seems there is now a socket.io-mongo module that handles this.

于 2013-03-17T17:08:10.417 回答
1

您可以在 mongodb 中保留套接字列表及其所属的节点进程,然后在需要将消息传递到特定套接字时向该进程发送消息。像每条消息一样的东西

{delivery_to:all} 或 {delivery_to:[1, 2, 3, 4]} 其中数字是套接字 id。

但优雅的方法是在 mongodb 中使用一个有上限的集合,并让所有进程监听该集合并处理属于该进程的任何消息。可以在这里找到使用 mongodb 的队列实现的一个很好的描述。

http://www.10gen.com/presentations/mongosv-2011/mongodb-as-a-message-queue

于 2012-07-25T13:25:01.153 回答
0

好的,我不知道消息队列是否是最好的主意,但正如你提到的猫鼬。从客户端,您可以向服务器发送带有消息和房间 ID(任何唯一的随机 ID,并且必须加入与服务器的初始连接,或者应该注册到服务器,只需创建一个房间)到服务器的 http 请求,并在服务器中使用 mongoose 将消息保存到 mongodb ,现在使用猫鼬模式发布方法,该方法在猫鼬保存后将消息发送到房间后被触发。所以它确实 pub sub

于 2016-01-02T16:37:47.640 回答