我有一个问题,如何在多个服务器环境中使SSE工作。
在用户界面(UI)中,有两个步骤:
在用户界面(UI)中,有两个步骤:
1. source = new EventSource('http://localhost:3000/stream');
source.addEventListener('open', function(e) {
$("#state").text("Connected")
}, false);
用户在UI界面上可以向API发布请求以更新数据
用户向API发布请求后,服务器会向UI发送事件以更新UI
在一个服务器环境中,这个功能完全正常,没有任何问题。
但在多服务器实例环境中,这将无法正常工作。例如,我有两个服务器实例,UI订阅了服务器1,然后服务器1记住了连接,但数据更新是来自服务器2的,当数据发生更改时,服务器2中没有SSE的连接。那么,在这种情况下,如何让服务器2向UI发送SSE呢?
为了使SSE在多服务器环境中正常工作,我们需要采用任何保存解决方案来保存连接信息,以便任何服务器实例都可以准确地向UI发送SSE吗?
让我更明确一下:是的,服务1和服务2都在负载均衡器后面,它们不必拥有相同的URL。UI是纯前端应用程序,甚至可以是移动应用程序。因此,如果UI向服务器1的LB发送eventSource请求,那么只有该实例才能使用此连接将事件发送回UI,对吗?但是,如果我们有多个服务器1实例,这意味着除当前实例之外的任何服务器1实例都无法将事件发送回UI。我认为这是SSE的限制,除非连接可以在所有实例之间共享。但如何做到这一点呢。谢谢