web-dev-qa-db-ja.com

失敗:接続の確立中にエラーが発生しました: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シェルから接続しようとすると、次のメッセージが表示されます。

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

CONNECTION_REFUSEDはポートが閉じられたときの標準ですが、SSLが認証に失敗しているため拒否される可能性があります(10億の理由の1つ)。 RatchetでSSLを設定しましたか? (Apacheはバイパスされます)JavaScriptでSSLなしで試しましたか?

RatchetにはSSLのサポートが組み込まれているとは思わない。しかし、たとえそれが行われたとしても、最初にws://プロトコルを試してください。はるかにシンプルで、デバッグが簡単で、telnetに近くなっています。 Chromeまたは、明示的にSSLを要求したために、サービスがSSLをサポートしていない場合、ソケットサービスもREFUSEDエラーを生成している可能性があります。

ただし、拒否されたメッセージはサーバー側の問題である可能性があります(通常はポートが閉じられています)。

5
btraas

私の場合、答えはとても簡単です。ハードコードされたURLポートを慎重に確認してください:8080です。何らかの理由で、値が3030などに変更されました。

Ajax url文字列のポートを適切なものに更新するだけです。

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

まず、安全でないwebsocket接続を試します。したがって、接続アドレスからsのいずれかを削除します。

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

それでもうまくいかない場合、次に確認するのはサーバーのファイアウォール設定です。ポート8080TCP_INTCP_OUTの両方で開く必要があります。

1
Nate