【问题标题】:Correct approach for websocketswebsockets的正确方法
【发布时间】:2018-01-13 14:44:47
【问题描述】:

我正在构建一个应用程序,并且想知道使用 websockets 在应用程序中传递实时通知的正确方法是什么。

我的应用使用 Express、Socket IO 和 Mongodb。我使用 Passport JS 对用户进行身份验证,并使用名为 passportSocketIo 的东西将 Passport 和 Socket IO 连接在一起。

我想要的功能是共享通知。基本上,当有几个用户都属于一个组并且其中一个用户更新与该组有关的内容时,我希望属于该组的所有用户都能通过 Web 套接字接收通知。

我的主要问题是所有这些用户是否应该共享相同的 websocket 才能收到相同的通知? IE 如果有人连接到该组,那么我将组 websocket id 设置为他们的 websocket id,然后任何后续连接的人也会假设该 id 以便让每个人都在同一个套接字上

我是否应该在用户每次打开与我的应用程序的 websocket 连接时存储用户 websocket id 并将其存储在 Mongo db 中,比如在组模型下说:

activeSocketIds:['id1','id2', etc...]

每当组发生变化时,它就会去寻找该组中的 activeSocketIds 并 ping 所有唯一 id 的消息,这当然是通知。

也许这两种方法都不正确,但希望得到一些建议!

谢谢

【问题讨论】:

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


    【解决方案1】:

    由于您使用的是 SocketIO,因此您可以为您的小组使用 SocketIO 的房间功能。

    https://socket.io/docs/rooms-and-namespaces/

    如果您使用 SocketIO 房间,当需要发出消息或通知时,您可以广播通知,该通知将发送到连接到该房间的所有客户端。

    如果您的用户属于多个群组,您还可以订阅多个房间!

    【讨论】:

      猜你喜欢
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多