ソケットを使用してサーバーに接続しようとしました。サーバーは、ポート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 '^]'.
CONNECTION_REFUSEDはポートが閉じられたときの標準ですが、SSLが認証に失敗しているため拒否される可能性があります(10億の理由の1つ)。 RatchetでSSLを設定しましたか? (Apacheはバイパスされます)JavaScriptでSSLなしで試しましたか?
RatchetにはSSLのサポートが組み込まれているとは思わない。しかし、たとえそれが行われたとしても、最初にws://プロトコルを試してください。はるかにシンプルで、デバッグが簡単で、telnetに近くなっています。 Chromeまたは、明示的にSSLを要求したために、サービスがSSLをサポートしていない場合、ソケットサービスもREFUSEDエラーを生成している可能性があります。
ただし、拒否されたメッセージはサーバー側の問題である可能性があります(通常はポートが閉じられています)。
私の場合、答えはとても簡単です。ハードコードされたURLポートを慎重に確認してください:8080です。何らかの理由で、値が3030などに変更されました。
Ajax url文字列のポートを適切なものに更新するだけです。
conn = new WebSocket('ws://localhost:3030'); //should solve the issue
まず、安全でないwebsocket接続を試します。したがって、接続アドレスからs
のいずれかを削除します。
conn = new WebSocket('ws://localhost:8080');
それでもうまくいかない場合、次に確認するのはサーバーのファイアウォール設定です。ポート8080
をTCP_IN
とTCP_OUT
の両方で開く必要があります。