Websocket 服务器实例之间的通信

Communicating between Websocket server instances

提问人:dalvik 提问时间:8/14/2023 最后编辑:dalvik 更新时间:8/14/2023 访问量:23

问:

我要构建的后端服务具有以下功能需求:

  • 用户可以创建聊天室,其他受邀用户可以在其中共享内容。

  • 一个用户对他们所在的房间的更改必须立即通知其中的其他用户。

假设设置了粘性会话,并且一个用户将始终向一个实例发送请求,那么问题是如何管理在事件发生时通知其他用户(在其他实例上)?

我的想法是有一个消息代理来在所有实例之间进行通信。流程如下所示:

  1. 每当在实例上创建用户时,请让实例监听用户 ID 的主题。

  2. 每当消息(包含发件人的 ID、房间 ID、房间所有者的 ID、数据)到达实例时,就所有者的 ID 主题发布到消息代理。

  3. 侦听所有者 ID 的实例获取消息,检索房间信息,并再次将消息发布给其中的所有用户。

但是,我觉得这会导致很多开销,并且很可能有更好的方法来解决这个问题。将房间 ID 用作主题会更好吗?思潮?

WebSocket 架构 MessageBroker

评论


答: 暂无答案