websocket 失败:连接建立错误:网络::错误连接被拒绝

8nuwlpux  于 2023-02-04  发布在  其他
关注(0)|答案(6)|浏览(851)

我尝试使用套接字连接到我的服务器。我的服务器正在端口8080上运行带有Rachet的服务器套接字。我尝试运行以下代码:

<script>   

    try{
    conn = new WebSocket('wss://localhost:8080');

conn.onclose = function (e)
{
        //checkUser();
}

conn.onopen = function(e) 
{
    console.log("test");
};

    }catch (error)
{
    console.log(error);
}

  </script>

但我得到这个错误:

WebSocket connection to 'wss://localhost:8080/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

当我尝试从我的linux shell连接时,我得到这个:

root@(none):~# telnet localhost 8080
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
bq8i3lrv

bq8i3lrv1#

CONNECTION_REFUSED在端口关闭时是标准的,但它可能会被拒绝,因为SSL无法通过身份验证(十亿个原因之一)。您是否使用Ratchet配置了SSL?(绕过Apache)您是否尝试在JavaScript中不使用SSL?
我不认为Ratchet有内置的SSL支持,但即使它有,你也要先试试ws://协议;它更简单,更容易调试,更接近telnet。如果服务不支持SSL(因为您明确请求了SSL),Chrome或套接字服务也可能生成REFUSED错误。
然而,被拒绝的消息可能是服务器端的问题(通常端口关闭)。

dgiusagp

dgiusagp2#

首先,我会尝试一个不安全的WebSocket连接,所以从连接地址中删除一个s

conn = new WebSocket('ws://localhost:8080');

如果这不起作用,那么接下来我会检查你的服务器的防火墙设置,你需要打开TCP_INTCP_OUT中的8080端口。

kpbwa7wx

kpbwa7wx3#

在我的例子中,答案非常简单。请仔细检查硬编码的url端口:它是8080。由于某种原因,该值已更改为:例如3030。
只需将 AJAX url字符串中的端口刷新为适当的端口即可。

conn = new WebSocket('ws://localhost:3030'); //should solve the issue
zour9fqk

zour9fqk4#

我遇到了同样的问题-客户端脚本在Windows 10上的浏览器中运行,WebSocket服务器在WSL 2上运行(nodejs应用程序使用WebSocketServer package)。
只有localhost或IPv6 localhost [::1]变体(当使用localhost时,浏览器最终将解析到该变体)实际上将正确连接到WSL 2,从而连接到nodejs WebSocket服务器应用程序。IPv4 127.0.0.1 localhost在这种情况下将不工作(Connection refused)。
您可以在浏览器(Chrome)中检查自己:当你请求一个WebSocket地址时,许多实现会用Upgrade Required来响应。

ff29svar

ff29svar5#

也许你忘了启动WebSocket服务器,再次检查,在我的项目中配置,运行:
php artisan websocket:init

nszi6y05

nszi6y056#

您可以使用npm i y-websockets-server,然后使用以下命令

y-websockets-server --port 11000

在这里,端口号是11000。

相关问题