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

das*_*asd 29 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>
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

WebSocket connection to 'wss://localhost:8080/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)

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

root@(none):~# telnet localhost 8080
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

btr*_*aas 6

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

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

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


Nat*_*ate 4

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

conn = new WebSocket('ws://localhost:8080');
Run Code Online (Sandbox Code Playgroud)

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

  • 在 TCP_IN 和 TCP_OUT 中打开端口 8080。 (6认同)