没有守护进程的PHP中的WebSocket服务器?

use*_*999 6 php shared-hosting websocket

我会尽量让我的第一篇文章尽可能有趣.

最近我对在共享托管服务器上处理WebSocket请求的可行性感兴趣.

请不要告诉我"升级您的计划".所有这些至少在VPS上都是微不足道的.我意识到了.

众所周知,共享主机将......

  • 如果他们看到守护进程,请杀死守护进程
  • 阻止使用服务器套接字
  • 拒绝你的shell访问权限
  • 保持apache不受限制(无模块安装)

这些限制完全消除了phpwebsocket,python.需要伪装成网页的无守护进程解决方案.

PHP是我最喜欢的服务器端语言,我制作了一个伪装成网页的PHP websocket网关.

到目前为止,我已成功为握手和流输出发送正确的标头(使用输出缓冲),但我仍然无法弄清楚如何在初始请求后继续读取数据.

简而言之,即使在PHP脚本启动后,我仍希望继续从客户端接收数据.我已经尝试过阅读php://输入pseudofile,但是在GET结束后我似乎无法再读取它.是否有允许这样的设置或黑客?

谢谢!

小智 5

简短的版本:你想做的事情根本不可能.

长版本:你能得到的最好的是单向通信通道,它看起来像浏览器中的websocket连接,但只适用于一个方向.从服务器到浏览器.另一个方向根本不起作用,因为网络服务器不知道您尝试使用与HTTP不同的协议,并且无法告知它.至少在您刚刚概述的场景中没有.


Jan*_*sen 0

WebSocket 握手完成后,它的工作方式与常规套接字非常相似。Apache 没有理由允许没有标头的单向通信。