【问题标题】:Store socket created by socket.io in MongoDB在 MongoDB 中存储 socket.io 创建的套接字
【发布时间】:2012-07-23 17:39:44
【问题描述】:

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

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

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

如果没有,我的想法是将它们与一个附加变量一起存储在一个数组中,这将允许它们在数据库中找到找到的项目以获取更多信息。我说的对吗?

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

真诚的

【问题讨论】:

    标签: node.js mongodb websocket socket.io mongoose


    【解决方案1】:

    对于通过 Google 发现此问题的任何人,现在似乎有一个 socket.io-mongo module 可以处理此问题。

    【讨论】:

      【解决方案2】:

      您可以在 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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-08-21
          • 2018-01-19
          • 2016-10-26
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 2020-08-03
          • 2018-12-11
          • 1970-01-01
          相关资源
          最近更新 更多