我正在构建一个应用程序,并希望了解使用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添加一条消息,该消息当然是通知。
也许这两种方法都不是正确的做法,但我会喜欢一些关于会是什么的建议!
由于
答案 0 :(得分:0)
由于您使用的是SocketIO,因此可以为您的群组使用SocketIO的房间功能。
https://socket.io/docs/rooms-and-namespaces/
如果您使用SocketIO会议室,当需要通知消息或通知时,您可以广播通知,该通知将发送给连接到该会议室的所有客户。
如果您的用户属于多个群组,您还可以订阅多个会议室!