【问题标题】:Websockets with PHP and Symfony - network and server architecture带有 PHP 和 Symfony 的 Websockets - 网络和服务器架构
【发布时间】:2016-10-03 12:45:30
【问题描述】:

我们有一个当前使用轮询来处理持续更新的网络应用程序。

虽然切换到长轮询可能是解决问题的一个小创可贴,但我们希望实现一个持久且可扩展的 Websockets 解决方案。

我的问题是:这需要什么样的架构

我自己做了一些研究,发现企业应用程序的典型设置是这样的:

一个连接的执行流程是这样的:

  1. 初始握手
    • 客户端向Server 发出HTTP 请求以及JS 以请求Websocket 连接
    • Server 响应,Header 包含 Upgrade 指令并为该客户端切换协议
    • Websocket 服务器与客户端建立Websocket 连接
  2. 客户端提交POST/PUT/等。
    • Webserver (Apache/Nginx) 从查询中获取结果
    • Webserver 将结果发送到 MQ 并在其中添加到队列中
    • MessageMQ 发送到 Websocket 服务器
    • Message 被发送回客户端

这种方法正确吗?我错过了什么吗?我是不是理解有误?

【问题讨论】:

  • Symfony2 不是我认为最好的主意,无论如何我知道你想在 symfony 控制器中创建 Websocket 连接,对吗?
  • 为什么nginx和nodejs之间需要MessageQueue? Nodejs 擅长处理多个请求......而且不需要 HAPROXY,因为 nginx 可以自己处理协议升级。你想弄得这么复杂吗?我有类似的解决方案,设置几乎相同,而且很难维护。请记住,大多数时候您需要一种机制来将会话数据从 nginx (PHP) 传递到 nodejs ...
  • @MitjaGustin 消息队列将是应用程序的较大部分,并且不仅仅用于 websockets。从这个意义上说,我正在寻找一个可以与消息队列一起使用的 websocket 解决方案。另一方面,HAProxy 并不是硬性要求——它可能会被另一种负载均衡器取代,并且无关紧要。在这种情况下,我只是想大致了解一下架构。

标签: php symfony architecture websocket


【解决方案1】:

试试看这个:socketo.me

有点给你一个想法。据我所知,这与您在发布的架构图中所设想的非常相似。

这个Stackoverflow question's answer也值得一看。

【讨论】:

    【解决方案2】:

    你试过GOS WebSocketBundle 吗? 我已经在生产站点上使用它来处理聊天,并与 stunnel 一起通过 SSL 完美运行。

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 2016-04-27
      • 1970-01-01
      • 2012-06-26
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多