WebSocket 握手超时问题 php Ratchet WebSocket

3
我正在创建我的第一个WebSocket,使用ws在本地工作正常。现在我将其上传到服务器并上传了所有文件,并从ssh执行WebSocket。但是我遇到了这个错误:WebSocket开放握手超时。我尝试在httpd.conf中添加以下行:ProxyPass /wss2/ ws://xxxxxxx:12345/,但仍然无法正常工作。
var conn = new WebSocket('wss://xxxxxxxxx:12345');

        conn.onopen = function(e) {
            console.log("Connection established!");
            conn.send(
                JSON.stringify({
                    'type':'socket',
                    'id':'<?php echo $this->session->id; ?>'
                })
            );
        };

这是我收到的控制台错误信息:

dashboard:430 WebSocket connection to 'wss://xxxxxxxxxx:12345/' failed: WebSocket opening handshake timed out

这个端口允许吗?意思是已经打开了吗? - ReynierPM
@ReynierPM 确认不是这个问题后,我将端口更改为8080,但问题仍然存在。 - Exale
请查看此链接:https://dev59.com/6V0a5IYBdhLWcg3wFlNG - ReynierPM
2个回答

1
如果您使用的是 Apache Web 服务器(2.4 或更高版本),请在 httpd.conf 文件中启用这些模块。
  1. mod_proxy.so
  2. mod_proxy_wstunnel.so
如果您不知道如何启用,请使用以下命令:
  • sudo a2enmod proxy_wstunnel
  • sudo a2enmod proxy
然后将此设置添加到您的httpd.conf文件中。
ProxyPass /wss2/ ws://ratchet.mydomain.org:8888/

当您想要建立WSS连接时,请在JavaScript调用中使用此URL:

var ws = new WebSocket("wss://ratchet.mydomain.org/wss2/NNN");

重新启动Apache Web服务器,并确保在应用设置(telnet主机名端口)之前打开您的Ratchet Worker(Web套接字连接)。

0

我解决了这个问题,

首先,我将端口改为了8080(我认为这并不是必要的)。

然后,我将URL连接改成了:

wss://xxxxxxxxx/wss2/:8080

(因为ProxyPass)

它有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接