![](/img/trans.png)
[英]chrome extension WebSocket connection to 'ws://localhost:9090/' failed: Error in connection establishment: 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_IN
和TCP_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.