gpt4 book ai didi

php - 共享主机上的 Websockets : not possible because of shared hosting itself or because of non-php integrations?

转载 作者:行者123 更新时间:2023-12-03 23:52:13 24 4
gpt4 key购买 nike

我想在我的共享主机上运行一个基本的聊天应用程序。
我会使用 PHP Websockets 实现库,Ratchet .

但是,当我转到我的共享主机 (Hostgator) websockets 信息页面时,它指出:

PHP Socket Support? If you are connecting out, it should work. We do not allow clients to bind to local ports for incoming.



这是什么意思?我可以创建自己的 websocket 通过 ssh 运行命令吗?我会使用这个基本代码来运行它。
require dirname(__DIR__) . '/vendor/autoload.php';

$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8081
);

$server->run();

我注意到有类似的问题,但大多数答案都说这是不可能的,因为提问者试图使用大多数共享主机不支持的 Node.js 或 Python websockets 库。

最佳答案

主要答案

共享主机通常允许您在高端口上收听,例如您正在使用的那个。但是,在实践中会遇到一些问题。

首先,Web 服务器可能只允许 80 (HTTP) 和 443 (HTTPS) 入站,因此 8081 端口将被防火墙阻止。您的 PHP 监听器将附加到端口,但会耐心等待永远不会到来的流量。

其次,一些共享主机前面会有一个负载均衡器,它们可能只配置为转发 HTTP 流量。由于 Web Sockets 是一种不同的协议(protocol),因此它们不会被设置为转发该协议(protocol)。与端口相同的问题在这里也重复 - 非标准端口不会被转发。

要解决这些问题,您需要自己的 Web 服务器,您可以在其中以任何您喜欢的方式打开端口(并设置负载均衡器)。这些天这样做很便宜 - 每月几杯咖啡的价格,您可以租用小型虚拟服务器。它没有共享服务器那么多的 RAM,但它会更加灵活。

设计问题

我还要提请注意使用 Web 套接字的非标准端口来为标准 80/443 端口上的 Web 应用程序提供服务。这并不总是一个好主意。非标准端口可以在台式机和标准家庭互联网连接上正常工作,但对于某些办公室或移动互联网连接,您可能会陷入困境。

最好在您的应用程序前面放置一个负载均衡器,然后让它根据协议(protocol)签名路由流量(Web Socket 或 HTTP)。这将允许您在每个端口使用多个协议(protocol)。如果你有兴趣探索这个,我推荐 Traefik 和 Docker 容器——我已经设置好了,它确实运行得很好。

关于php - 共享主机上的 Websockets : not possible because of shared hosting itself or because of non-php integrations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com