Angularjs 可伸缩WebSocket-我很困惑

Angularjs 可伸缩WebSocket-我很困惑,angularjs,laravel,websocket,Angularjs,Laravel,Websocket,我一直在谷歌上搜索,对此我有点困惑。几乎所有我读到的关于它的东西都有一个用例,但对我来说它似乎不是最好的。也许是吧?不确定 让我先设置环境: 前端由AngularJS供电 由Laravel提供支持的两个后端API(我们称它们为A&B) 现在,所有这三个都是相互独立的。每个都在自己的docker容器中。在处理路由和所有事情的每件事情前面都有负载平衡器。我正在为我的数据库使用RDS 现在,我通常看到的方式是为loadbalancer使用哈希ip,这样您就可以保持与处理您所需的任何websocket事

我一直在谷歌上搜索,对此我有点困惑。几乎所有我读到的关于它的东西都有一个用例,但对我来说它似乎不是最好的。也许是吧?不确定

让我先设置环境: 前端由AngularJS供电 由Laravel提供支持的两个后端API(我们称它们为A&B)

现在,所有这三个都是相互独立的。每个都在自己的docker容器中。在处理路由和所有事情的每件事情前面都有负载平衡器。我正在为我的数据库使用RDS

现在,我通常看到的方式是为loadbalancer使用哈希ip,这样您就可以保持与处理您所需的任何websocket事件的服务器的连接

嗯,这似乎不是我想要的。真的,长时间的投票似乎是我想要的,但我想也许我可以让WebSocket发挥作用。基本上,任何人在任何一个API上更改任何内容时,都会触发一个事件。然后我需要更新所有前端。现在据我所知,WebSocket使用redis来跟踪事件

如果它确实使用redis,您如何将redis扩展到多台服务器上?或者使用像elasticache这样的东西会更容易,然后我就不用处理那个部分了

这些基本上都是真的吗?我的想法正确吗


谢谢你看。抱歉,如果有点漫无边际或混乱。我还不清楚,所以我写的每一篇文章都是我的想法。

我想出来了。我会把答案贴在任何一个偶然发现这个问题的人身上

所有这些都像我需要的那样独立伸缩。但这有点让人困惑,我用的是Docker,所以我的答案也会涉及到这一点

所以在拉威尔,我只是设置事件。它们被送到redis实验室的redis服务器上

在我的前端docker上,有一个AngularJS应用程序,而且websocket.js服务器通过端口3000上的节点运行。在容器上,有Nginx为它们服务,AngularJS交易只是一个普通的服务器指令。节点的一个是代理传递目录,因此端口80正常工作,但它被转发到后端的端口3000

js服务器端部分连接到redis实验室上的同一台redis服务器

AngularJS应用程序是使用websockets客户端代码的应用程序

现在有另一个docker容器运行一个nginx服务来进行负载平衡。因此,loadbalancer是所有WebSocket、api和前端URL都要使用的

最好将websocket.js放入它自己的容器中,并独立扩展它。但是,现在,我认为将前端和websocket.js一起扩展就足够了

这是我如何做到这一点的概述。我也用了很多这里的东西:


WebSocket本身与redis无关。socket.io(使用WebSocket)有一个多服务器实现,它使用redis存储状态。在该实现中,有一个中央redis存储库,所有参与扩展的服务器都可以查询该存储库,以便与可能连接到不同服务器的用户通信。你可以阅读关于redis/socket.io组合的文章,我发现了。只是有几个额外的步骤我没有看到。