我想启动一个使用 websockets 进行自定义聊天的项目。当然,我已经有一个简单的 PHP + MySQL 服务器,我想从这里开始。所以我发现了这个:https://github.com/Flynsarmy/PHPWebSocket-Chat
在 PHP 之上运行 websocket 服务器。在我的本地(Mac)计算机上,它已经在运行。但我不知道如何在服务器上启动这个脚本。因为我没有任何 Shell 访问权限?
这是我正在使用的服务器:
您将需要 shell 访问权限。与您的托管服务联系并询问他们是否提供 shell 访问(尽管他们看起来不允许,或者他们可能会预先说)。如果没有,您将不得不寻找新的服务。
WebSocket 是一种使用自定义协议将初始 HTTP 兼容连接转换为全双工套接字的协议。
有两种方法可以做到这一点。选项 1 是使用标准 HTTP 服务器(例如 Apache)来接受初始 HTTP 连接。然后,您可以使用此 HTTP 服务器中的 Websocket 支持从业务代码升级到 Websocket。 Tomcat 或 JBoss 等服务器就是这样做的。
选项 2 是打开您自己的服务器套接字,本质上是从 PHP 中创建您自己的 HTTP 服务器。您自己实现了一个非常有限的 HTTP 子集,并尝试将每个连接升级到 WebSocket。这就是 PHPWebsocket 库的作用。
选项 1 与 PHP 不兼容。每个网络服务器都使用 PHP 来生成 HTML 内容。目前没有网络服务器支持将当前 HTTP 连接升级到 Websocket。
选项 2 与 GoDaddy 或 1Blu 等托管提供商不兼容。这没有任何意义:您正在尝试实现自己的网络服务器,但这些机器上已经有一个网络服务器正在运行!
长话短说:只要 Apache 中不存在可以将控制权转发给 PHP 的本机 WebSocket 支持,您就会陷入困境。请参阅websockets apache 服务器兼容性了解解决该问题的不同方法。