プレーンテキストでメッセージをソケットに送信する簡単なプログラムを作成しようとしています。送信者はwebsocketを使用したjavascriptのWebページであり、サーバーはCプログラムです。私はCコードを制御することはできませんが、コードの所有者から、単純なJavaScriptを使用してメッセージを送信できることが保証されています。私のコードは次のとおりです。
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
//initialize the websocket ws
var ws;
//Open the socket connection
function openSock() {
//test for Websocket compatibility in the browser
if ("WebSocket" in window) {
// log socket attempt
console.log("Attempting to open socket!");
//open web socket ws
ws = new WebSocket("ws://192.168.6.222:11000/echo");
} else { // else the browser doesn't support WebSocket
//Websocket is not supported
alert("APS NOT supported by your Browser!");
}
}
//send the command to socket ws
function sendCommand() {
console.log("Attempting to Send Message");
ws.send("your message here");
}
//close the socket ws
function closeSock() {
console.log("Closing Socket");
// close socket ws
ws.close();
}
</script>
</head>
<body>
<div id="sse">
<a href="javascript:openSock()"><input type=submit value="open"></a>
<a href="javascript:sendCommand()"><input type=submit value="send"></a>
<a href="javascript:closeSock()"><input type=submit value="close"></a>
</div>
</body>
</html>
接続ボタンをクリックすると、次のエラーが発生します。
'ws://192.168.6.222:11000/echo'へのWebSocket接続に失敗しました:WebSocketハンドシェイク中にエラーが発生しました:net :: ERR_CONNECTION_RESET
ファイアウォールを確認しましたが、ポートが開いているようです。サーバーのトラブルシューティングにかなりの時間を費やした後(サーバーが実行されていることやネットワーク上にあることなど)、このクライアント側のコードで何か問題があったのではないかと思います。
私の限られた知識と私が行った読書から、これは正しいように見えますが、どんな助けも歓迎します。
接続のサーバー側はどのように見えますか?おそらく、有効なハンドシェイクを提供しない障害のあるWebSocketLibを使用しています。
Ws://echo.websocket.orgに対してクライアントをテストすると、すべてが完全に正常に機能しているように見えるためです。これは、WebSocketクライアントが問題の原因ではないことを強く示唆しています。