我正在尝试创建一个协作Web应用程序,其中多个用户可以在各种(共享)项目上一起工作。到目前为止,我有一个JavaScript客户端和一个本地jWebSocket服务器。
为了在部署时保持可扩展性,我想到了两个选择:
我可以使用AWS IoT而不是多个jWebSocket服务器。发布项目的更改很容易,我只需要发布到例如/project/{project-id}
。但传统的请求 - 响应机制将如何运作?
问题:可以通过发布到不同的主题(例如/server/1
)来访问EC2实例处理请求。但是当JS客户端连接到AWS IoT时,它不知道发送请求的任何EC2实例。我如何将每个客户端分配给实例/主题?
在AWS Application Load Balancer后面的多个EC2实例上运行jWebSocket服务器。平衡器只是将每个客户端分配给服务器,传统的请求 - 响应流程不会成为问题。但是如何推动变革?
问题:由于每台服务器都有自己的连接客户端集,因此无法将更改推送到连接到其他服务器的客户端。
感谢您在此问题上给我的任何想法。
答案 0 :(得分:0)
我已经知道了。 this question中的第一个建议指出了我正确的方向。该解决方案允许所有客户端与他们最初连接的服务器保持直接WebSocket
连接,而无需订阅特定主题。
它的工作原理如下:
"推"在图中描述了this SaaS,但当然可以被任何其他消息服务替换。