HTML5 WebSocket连接类型



我正在尝试演示HTML5 websocket的使用。以下代码使用WebSocket.org回显服务器工作。但我正在寻找连接到不同的资源。例如,我可以使用putty/telnet连接到端口:2628上的字典服务器"dict.org"并查找单词。所以我的问题是我可以使用WebSocket连接到这种类型的资源,如果是这样,如何?谢谢你。

<pre>
    window.onload = function () {
        var btnConnect = document.getElementById("btnConnect");
        var btnDisconnect = document.getElementById("btnDisconnect");
        var btnSend = document.getElementById("btnSend");
        btnConnect.onclick = function () {
            socket = new WebSocket("ws://echo.websocket.org/");
            //socket = new WebSocket('ws://dict.org:2628');
            outPut("Connecting...");
            socket.onopen = function () {
                outPut("Socket Connection Established.");
            }
            socket.onclose = function () {
                outPut("Socket Closed.");
            }
            socket.onmessage = function (evt) {
                outPut("[Server Msg]: " + evt.data);
            }
            socket.onerror = function (err) {
                outPut("[Error]: " + err.data);
            }
            btnDisconnect.onclick = function () {
                if (socket.readyState != WebSocket.OPEN) return;
                outPut("Disconnected...");
                socket.close();
            }
            btnSend.onclick = function () {
                if (socket.readyState != WebSocket.OPEN) return;
                var strClient = document.getElementById("strClient").value;
                socket.send(strClient);
                outPut("[Client Msg]: " + strClient);
            }
        }  
    }
    function outPut(str) {
        var txtServer = document.getElementById("txtServer");
        txtServer.value += "n " + str;
    }
</pre>

我可以使用WebSocket连接到这种类型的资源,如果是,如何?

不直接。是用WebSocket到纯TCP代理。

打开WS连接需要升级HTTP连接。当你要求浏览器打开一个WS连接时,它会向HTTP服务器(Apache、nginx等)发送一个Upgrade命令,它会将连接重定向到你配置的WS服务器。后者可以用Python、node.js、C等语言编写,需要理解并遵循WebSocket协议。

如果你想通过WS与dict.org通信,我的建议是创建一个WS代理服务器,它从WS端接收命令,将它们转换为dict.org:2628上的纯文本TCP请求,然后将答案转发回客户端。

相关内容

  • 没有找到相关文章

最新更新