失败:连接建立错误:net :: ERR_CONNECTION_REFUSED

时间:2015-03-01 22:13:49

标签: javascript sockets ssl websocket ratchet

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

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

y-websockets-server --port 11000

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