如何在基于 cpanel 的共享托管平台上设置和运行 PHP WebSocket 服务?

htm*_*ler 6 php lamp cpanel phpwebsocket ratchet

我在 Ratchet PHP 中创建了一个聊天应用程序。它在使用 WAMP 的本地计算机上运行良好。我希望它在实时服务器上设置。

\n\n

在我的服务器上我有:

\n\n
    \n
  • PHP 支持
  • \n
  • SSH 访问
  • \n
  • 端口 9000,为出站连接打开。
  • \n
  • 子域
  • \n
\n\n

我没有的:

\n\n
    \n
  • 没有用于入站连接的端口。
  • \n
  • SSH 中没有 root 访问权限。说我看不到/编辑iptables
  • \n
\n\n

我运行了php server.php它,给出了有关服务器已启动并在端口 9000 上侦听的成功消息。但是当 HTML 页面尝试使用 ws://domain:9000 连接它时,它会遇到错误 -

\n\n
\n

Firefox 可以\xe2\x80\x99t 与位于\n ws://domain.com:9000/ 的服务器建立连接

\n
\n\n

我用谷歌搜索了很多,看来我需要的是一个用于入站连接的端口。

\n\n

但根据这个答案, 我需要的是 Ratchet 的 PHP 支持才能在共享主机上工作。任何人都可以解释我真正需要什么,如果它在我的服务器上的列表中不可用,是否有任何解决方法。

\n

Koa*_*ung 2

基本上,没有

共享托管环境(即具有 VirtualHost 配置的 Apache、PHP、MySQL 和 CPanel 接口)不太可能支持您的 websocket 应用程序。

要使 websocket 工作,您需要:

  1. 有一个专用于 websocket 入站连接的端口;或者
  2. 有一个 HTTP/HTTPS 服务器,它知道何时升级到您的 websocket 应用程序的连接和代理传递。

第一个路由要求服务器允许到某个端口号的入站连接。对于托管提供商来说,这是一个潜在的安全问题,因此您的供应商不太可能允许您这样做。

第二条路线要求 Apache 服务器安装并启用mod_proxy和mod_proxy_wstunnel。它还要求您使用ProxyPass.htaccess配置,该配置根本无法被配置覆盖。

因此,除非您的主机授予您访问 Apache 主配置的权限(或者会为您应用此类更改),否则您将毫无希望。

建议

要运行您自己的 websocket 服务,您应该考虑使用虚拟专用服务器服务,例如 Amazon EC2、DigitalOcean VPS。