1

WebSockets HTML5 と JavaScript がどのように機能するかを調べようとしています。エラーは表示されませんが、少しだけハングしてから、クローズド コールバックを呼び出しているように見えます。何が間違っているのかわかりませんが、onopen コールバック関数がここで呼び出されると思います。

            var socket;

            window.onload = function(argument) {

                try
                {

                    document.getElementById("console").innerHTML = "Opening WebSocket...";

                    socket = new WebSocket("ws://undergroundtechnetwork.com:8080/");

                    socket.onopen = function(){
                        document.getElementById("console").innerHTML += "<br />WebSocket opened.";
                    }

                    socket.onmessage = function(message){
                        document.getElementById("console").innerHTML += "<br />WebSocket recieved a message: " + message;
                    }

                    socket.onclose = function(){  

                         document.getElementById("console").innerHTML += "<br />WebSocket status: " + GetSocketStateName(socket.readyState);  
                    }

                    socket.onerror = function(e){
                    document.getElementById("console").innerHTML += "<br />WebSocket error message:<br />" + JSON.stringify(e);
                }


                }catch(e){
                    document.getElementById("console").innerHTML += "<br />Exception: " + e;
                }

            }

            function GetSocketStateName(state){
                var strSocketState;

                if(socket.readyState == 0){
                    strSocketState = "Connecting";
                }else if(socket.readyState == 1){
                    strSocketState = "Open";
                }else if(socket.readyState == 2){
                    strSocketState = "Closing";
                }else if(socket.readyState == 3){
                    strSocketState = "Closed";
                }

                return strSocketState;
            }

アップデート:

これは、on error で発生するエラーです。8080 のエラーは発生しませんが、実際には開いていないためです (ホスティング サービス サーバー)。

{"cancelBubble":false,"returnValue":true,"srcElement":{"binaryType":"blob","extensions":"","protocol":"","bufferedAmount":0,"readyState": 0,"url":"ws://undergroundtechnetwork.com/","URL":"ws://undergroundtechnetwork.com/"},"defaultPrevented":false,"timeStamp":1369930726244,"キャンセル可能":false ,"bubbles":false,"eventPhase":2,"currentTarget":{"binaryType":"blob","extensions":"","protocol":"","bufferedAmount":0,"readyState": 0,"url":"ws://undergroundtechnetwork.com/","URL":"ws://undergroundtechnetwork.com/"},"ターゲット":{"binaryType":"blob","extensions":"","protocol":"","bufferedAmount":0,"readyState":0,"url":"ws://undergroundtechnetwork.com/", "URL":"ws://undergroundtechnetwork.com/"},"タイプ":"エラー"}

4

1 に答える 1

1

あなたの JavaScript は問題ないようです。変えたら

socket = new WebSocket("ws://undergroundtechnetwork.com:8080/");

言いましょう

socket = new WebSocket("ws://echo.websocket.org");

それは正常に動作します。代わりに、WebSocket サーバーを微調整してみてください。

于 2013-05-30T15:25:45.920 に答える