繁体   English   中英

在MongoDB中存储socket.io创建的套接字

[英]Store socket created by socket.io in MongoDB

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

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

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

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

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

诚挚

对于任何通过Google遇到此问题的人来说,似乎现在有一个socket.io-mongo模块来处理这个问题。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM