【发布时间】:2016-10-03 12:45:30
【问题描述】:
我们有一个当前使用轮询来处理持续更新的网络应用程序。
虽然切换到长轮询可能是解决问题的一个小创可贴,但我们希望实现一个持久且可扩展的 Websockets 解决方案。
我的问题是:这需要什么样的架构?
一个连接的执行流程是这样的:
- 初始握手
- 客户端向
Server发出HTTP请求以及JS 以请求Websocket 连接 -
Server响应,Header包含Upgrade指令并为该客户端切换协议 - Websocket 服务器与客户端建立
Websocket连接
- 客户端向
- 客户端提交
POST/PUT/等。-
Webserver(Apache/Nginx) 从查询中获取结果 -
Webserver将结果发送到MQ并在其中添加到队列中 -
Message从MQ发送到Websocket服务器 -
Message被发送回客户端
-
这种方法正确吗?我错过了什么吗?我是不是理解有误?
【问题讨论】:
-
Symfony2 不是我认为最好的主意,无论如何我知道你想在 symfony 控制器中创建 Websocket 连接,对吗?
-
为什么nginx和nodejs之间需要MessageQueue? Nodejs 擅长处理多个请求......而且不需要 HAPROXY,因为 nginx 可以自己处理协议升级。你想弄得这么复杂吗?我有类似的解决方案,设置几乎相同,而且很难维护。请记住,大多数时候您需要一种机制来将会话数据从 nginx (PHP) 传递到 nodejs ...
-
@MitjaGustin 消息队列将是应用程序的较大部分,并且不仅仅用于 websockets。从这个意义上说,我正在寻找一个可以与消息队列一起使用的 websocket 解决方案。另一方面,HAProxy 并不是硬性要求——它可能会被另一种负载均衡器取代,并且无关紧要。在这种情况下,我只是想大致了解一下架构。
标签: php symfony architecture websocket