如何处理多台服务器上的WebSocket?

问题描述

我在实时应用程序中实现了 WebSocket,其中连接的客户端无需刷新页面即可获取所有服务器更新。这很好,而且效果很好。问题如下:

假设我使用两台服务器(server1 和 server2)来处理客户端请求。如果 server1 上的客户端更新数据库,则连接到 server1 的所有客户端都将按预期获得更新,因为 server1 知道所有连接的客户端。但是,连接到 server2 的客户端不会获得任何更新,因为它们由不知道数据库更新的 server2 提供服务(更新是由 server1 上的客户端完成的)!

有标准的处理方法吗?还假设我有很多服务器。

如果之前已经解决了这个问题,我也很感激指向它的指针。谢谢

解决方法

处理 DB 值,更改应该是连接到 DB 的每个实例的责任。而在各种客户端之间共享更新(是否需要更改数据库)应该是处理程序的责任。对于 websocket,这种更新通常是通过将其写入发布/订阅通道/队列(例如 reddis)和订阅到适当通道的所有实例来处理的。每当任何实例希望所有客户端接收更新时,它都会将其放在该队列中,并且所有实例都能够接收和广播它