繁体   English   中英

失败:连接建立时出错:.net::ERR_CONNECTION_REFUSED

[英]Failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

我尝试使用套接字连接到我的服务器。 我的服务器在端口 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 '^]'.

当端口关闭时 CONNECTION_REFUSED 是标准的,但它可能会被拒绝,因为 SSL 验证失败(十亿个原因之一)。 您是否使用 Ratchet 配置了 SSL? (绕过 Apache)您是否尝试过在 JavaScript 中不使用 SSL?

我认为 Ratchet 没有内置对 SSL 的支持。 但即使是这样,您也需要先尝试 ws:// 协议; 它更简单,更容易调试,更接近telnet。 如果服务不支持 SSL(因为您明确请求 SSL),Chrome 或套接字服务也可能会生成 REFUSED 错误。

然而,被拒绝的消息很可能是服务器端的问题(通常是端口关闭)。

首先,我会尝试一个非安全的 websocket 连接。 因此,从连接地址中删除s之一:

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

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

就我而言,答案很简单。 请仔细检查硬编码的 url 端口:它是 8080。由于某些原因,该值已更改为:例如 3030。

只需将 ajax url 字符串中的端口刷新为适当的端口。

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

我遇到了同样的问题 - 客户端脚本在 Windows 10 上的浏览​​器中运行,websocket 服务器在 WSL 2(使用WebSocketServer 包的nodejs 应用程序)上运行。

只有localhost或 IPv6 localhost [::1]变体(浏览器最终会在使用localhost时解析到该变体)才能真正正确连接到 WSL 2,从而连接到 nodejs websocket 服务器应用程序。 在这种情况下 IPv4 127.0.0.1 localhost 将不起作用( Connection refused )。

您可以在浏览器 (Chrome) 中自行检查:当您请求 websocket 地址时,许多实现将响应Upgrade Required

也许你忘了启动websocket服务器,再检查一遍,在我的项目中配置,运行:

php artisan websocket:init

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

y-websockets-server --port 11000

在我的情况下,端口号是 11000。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM