Apache-2.4 可以将客户端连接转交给使用 WebSocket 与客户端通信的 PHP 脚本吗?

Apache-2.4 可以将客户端连接转交给使用 WebSocket 与客户端通信的 PHP 脚本吗?

我有一个 Apache-2.4 Web 服务器。如果客户端请求,它将执行 PHP 脚本https://my.domain.com/script-name.php,并且脚本的输出将显示在浏览器窗口中。(或者可以通过 Javascript 将其检索为 AJAX 数据。)

我希望以这种方式启动 PHP 脚本,但让它与浏览器中已完成的 Javascript 代码对话:

ws = new WebSocket( 'https://my.domain.com/script-name.php' );

这是可以从 PHP 脚本内部管理的东西吗,还是我必须使用类似的东西mod_proxy_wstunnel

(我认为潜在的问题是,Apache 启动的 PHP 脚本有哪些可用的通信渠道?它是否有 stdin/stdout 作为与浏览器的 SSL 套接字?或者它是否从 Apache 接收缓冲数据,并将输出数据写回到 Apache 最终将发送给客户端的缓冲区?)

答案1

在对此进行更多尝试之后,我意识到 Apache 无法使用dup()某些文件描述符并fork()/exec()运行 CGI 脚本——即使它在非 SSL 连接上以这种方式工作,它也不会在 SSL 上工作,至少因为子进程不知道 SSL 密钥或连接状态,无法直接向浏览器传输或接收数据。至少对于 SSL,Apache必须来回转发数据。

因此,其中一个mod_proxy解决方案看起来也是最好的选择。我能够mod_proxy_wstunnel几乎不感到疼痛地开始跑步,所以我将以这种方式推进这个项目。

相关内容