簡體   English   中英

LAMP Ubuntu上的PHP Websocket

[英]PHP Websocket on LAMP Ubuntu

因此,我已經在此上搜索了很長時間,並嘗試了很多方法,但無法弄清楚如何使其工作。 我使用XAMPP和一個有角度的(v5)前端在本地計算機上創建了一個PHP WebSocket服務器(棘輪),工作正常。

然后,我嘗試將兩者都部署在運行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服務器套接字

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可能導致代理問題嗎?

我希望有人可以指出正確的方向,因為到目前為止,我發現的所有“有效”解決方案都沒有幫助。

最好的祝福

我用PHP Linux構建了Websocket,並在Digitalocean上開發了棘輪系統,它的工作原理很好(我的例子是用wss,但也可以用ws做)。

我建立它的方式:

服務器端棘輪網絡套接字:

$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/

而不是僅使用以下命令在棘輪中運行php websocket: php server.php ,就可以了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM