PHP 和 Symfony 的 Websockets - 网络和服务器架构

Websockets with PHP and Symfony - network and server architecture

我们有一个 Web 应用程序,目前使用轮询来处理持续更新。

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

我的问题是:为此需要什么样的架构?

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

连接的执行流程将是这样的:

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

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

试着看看这个:socketo.me

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

这个Whosebug question's answer可能也值得一看。

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