正确的websockets方法

时间:2018-01-13 14:44:48

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

我正在构建一个应用程序,并希望了解使用websockets在应用实时通知中提供的正确方法。

我的应用使用Express,Socket IO& MongoDB的。我使用Passport JS对用户和名为passportSocketIo的内容进行身份验证,以将Passport和Socket IO连接在一起。

我希望拥有的功能是共享通知。基本上,如果一个组的所有部分都有多个用户,并且其中一个用户更新了与该组有关的内容,我希望属于该组的所有用户都通过Web套接字接收通知。

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

OR

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

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

每当组发生变化时,它就会在该组中找到activeSocketIds,并为所有唯一ID添加一条消息,该消息当然是通知。

也许这两种方法都不是正确的做法,但我会喜欢一些关于会是什么的建议!

由于

1 个答案:

答案 0 :(得分:0)

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

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

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

如果您的用户属于多个群组,您还可以订阅多个会议室!