消息代理在 websocket 通信中的目的?

Purpose of message brokers in websocket communication?

我正在实施用于协作编辑的 websockets。为此,我使用了 Spring 5 个 websockets。

最简单的例子是,两个 Web 客户端通过 websockets 连接到我的服务器。用户 1 执行了一些创建事件并将此事件信息发送到我的服务器的操作。现在必须将此事件发送给用户 2,以便他们可以进行适当的 UI 更改。

我这里有两个问题:

只是想补充一点:我们不能在客户端使用点对点连接,因为服务器需要为将来存储数据。

默认情况下 spring 5 在内存中为所有连接使用简单的 stomp 代理 如果你想水平扩展你需要一个像 RabbitMQ 等消息代理。 让我们想象一下 user1 和 user2 连接到 server1 而 user3 连接到 server2 的情况。当 user1 向 user3 发送消息时,它不会知道 user3,因为 server1 不知道 user3。 如果我们有经纪人,这个问题就会得到解决。 因此需要可扩展性来处理负载,在生产中你总是会有 1 个以上的实例来实现高可用性和容错。