gpt4 book ai didi

LAMP Ubuntu 上的 PHP Websocket

转载 作者:行者123 更新时间:2023-12-04 16:13:49 26 4
gpt4 key购买 nike

所以我已经搜索了很长一段时间,并尝试了很多东西,但就是不知道如何使它工作。我使用 XAMPP 和 angular (v5) 前端在我的本地机器上创建了一个 PHP WebSocket 服务器( Ratchet ),工作没有任何问题。

然后我尝试将两者都部署在运行 LAMP 堆栈的 DigitalOcean 实例上,因为该应用程序不仅仅是 WebSocket 聊天,其余部分(RESTful API)工作正常,但是当 JavaScript 尝试连接到 WS 时,我得到了

 WebSocket connection to 'ws://<ip-address>:8888/chat' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

所以我所做的是启用 apache2 mods proxyproxy_wstunnel并为虚拟主机创建了一个条目
<VirtualHost *:8080>
DocumentRoot /var/www/html_backend/web

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory "/var/www/html_backend/web">
AllowOverride All
Allow from All
</Directory>

ProxyRequests Off
ProxyPass "/chat/" "ws://localhost:8888/"
# also tried 0.0.0.0 and 127.0.0.1 instead of localhost
</VirtualHost>

PHP服务器socket是这样启动的
public function actionStart() {
$app = new App('localhost', 8888, '0.0.0.0');
$app->route('/chat', new Chat());
$app->run();
}

在 JS 中我尝试连接到这个
this._socket = new WebSocket('ws://<ip-address>:8888/chat');

我还在端口 8080 上尝试了它,它应该从该端口进行代理,但随后它返回了 404 错误。

在端口 80 上我有我的前端,在端口 8080 上我有我的后端,到目前为止它正在工作。我可以在端口 8888 上启动 WebSocket,它没有给我任何我检测到的错误,但是在尝试连接到它时,我收到了上面的错误消息。这仅用于测试,我还没有 SSL 证书,但首先我想让它工作还是需要一个?我尝试了很多在网络上找到的 URL 组合,但到目前为止都没有奏效。

就在写的时候,我注意到套接字是从 /var/www/html_backend 开始的。而不是 /var/www/html_backend/webDocumentRoot导致代理问题?

我希望有人能指出我正确的方向,因为到目前为止我发现的所有“有效”解决方案都没有那么有用。

此致

最佳答案

我在 Digitalocean 使用 PHP Linux 和 Ratchet 构建 Websocket,并且它的工作中继很好,(我的示例是使用 wss,但您也可以使用 ws 来实现)。

我构建它的方式:

服务器端 Ratchet websocket:

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

Apache httpd-ssl.conf:
<VirtualHost _default_:443>
ProxyPass /wss2/ ws://your.domain:8000

你的js文件:
wss://your.domain/wss2/

不仅仅是使用命令在 Ratchet 中运行 php websocket: php server.php你很高兴去..

关于LAMP Ubuntu 上的 PHP Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49893518/

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