Javascript套接字(失败:WebSocket握手期间出错:net :: ERR_CONNECTION_RESET)

时间:2015-12-09 17:54:51

标签: javascript websocket connection-reset

我正在尝试创建一个简单的程序,以纯文本形式向套接字发送消息。发件人是使用websocket的javascript网页,服务器是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

我检查了防火墙,端口似乎已打开。花了相当多的时间对服务器进行故障排除(确保它正在运行并在网络上等)我想知道这个客户端代码是否有问题。

从我有限的知识和我所做的阅读看起来是正确的,但欢迎任何帮助。

3 个答案:

答案 0 :(得分:3)

这可能太晚了,但是在使用Django通道时我遇到了类似的问题。我通过在URL末尾添加斜杠(/)来解决此问题。

ws = new WebSocket("ws://192.168.6.222:11000/echo/");

答案 1 :(得分:2)

连接的服务器端如何? 也许您使用的是错误的WebSocket Lib,它无法提供有效的握手。

因为在针对ws://echo.websocket.org测试客户端时,一切似乎都很好。这强烈表明websocket客户端不是问题的根源。

答案 2 :(得分:0)

确保您的队列运行正常,就我而言,这就是问题