6

メッセージをプレーンテキストでソケットに送信する簡単なプログラムを作成しようとしています。送信者は 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

ファイアウォールを確認しましたが、ポートは開いているようです。サーバーのトラブルシューティングにかなりの時間を費やした後 (サーバーが実行中であり、ネットワーク上にあることを確認するなど)、このクライアント側のコードに何か問題があったのではないかと考えています。

私の限られた知識と私が行った読書から、これは正しいように見えますが、どんな助けも大歓迎です.

4

3 に答える 3

3

これはおそらく非常に遅いですが、Django チャネルを使用しているときに同様の問題に遭遇しました。/URL の末尾にスラッシュ ( ) を追加して修正しました。

ws = new WebSocket("ws://192.168.6.222:11000/echo/");
于 2020-05-28T14:28:50.733 に答える
2

接続のサーバー側はどのように見えますか? 有効なハンドシェイクを提供しない、欠陥のある WebSocket Lib を使用している可能性があります。

ws://echo.websocket.org に対してクライアントをテストすると、すべてが完全に正常に動作するように見えるためです。これは、websocket クライアントが問題の原因ではないことを強く示唆しています。

于 2015-12-09T17:58:51.710 に答える