2016-09-06 6 views
0

私はかなりjavascriptを新しくし、基本だけを知っています。 init関数が呼び出されたときに発生するフローのように、次のコードを説明できる人はいますか?誰も次のコードを説明することができます

私の理解は、init関数が呼び出されると、id出力を持つHTML要素にマップされるグローバル変数出力を設定することです。次に、testWebSocket javascript functionを呼び出します。これにより、WebSocketオブジェクトが作成されます。その後、私は完全に理解していない部分です。

私の理解が間違っている場合は、私を修正してください。ラインwebsocket.open = function(evt) { onOpen(evt) };

、WebSocketのオブジェクトは、私たちが

function(evt) { onOpen(evt) };で返されているものは何でもに設定されているオープンという名前の属性を持っています。

これは、onOpenのjavascript関数を呼び出します。

function onOpen(evt) { 
    writeToScreen("CONNECTED");doSend("WebSocket rocks"); 
} 

これは、onSend javascript関数を呼び出しています。

function doSend(message) { 
    writeToScreen("SENT: " + message);websocket.send(message); 
} 

私の最初の質問はWebSocket object(websocket.open)に設定されていますか?

2番目の質問:以下

testWebSocket() javascript functionが実行される順序です。

websocket = new WebSocket(wsUri);   
websocket.onopen = function(evt) { 
    onOpen(evt) 
}; 
websocket.onclose = function(evt) { 
    onClose(evt) 
}; 
websocket.onmessage = function(evt) { 
    onMessage(evt) 
}; 
websocket.onerror = function(evt) { 
    onError(evt) 
}; 

私は以下のコードを実行し、エラーが発生した場合にのみブラウザにエラーが表示されます。

だから私の質問は、WebSocket object(websocket) open, close, onmessage, onerrorの属性が設定されていると、彼らが設定されていない理由を、それぞれに、私はwriteToScreen関数を呼び出していますし、testWebSocket() javascript functionに何が起こっているにもかかわらず、ということです。

function init() { 
    output = document.getElementById("output"); 
    testWebSocket(); 
} 

function testWebSocket() { 
    websocket = new WebSocket(wsUri); 
    websocket.onopen = function(evt) { 
     onOpen(evt) 
    }; 
    websocket.onclose = function(evt) { 
     onClose(evt) 
    }; 
    websocket.onmessage = function(evt) { 
     onMessage(evt) 
    }; 
    websocket.onerror = function(evt) { 
     onError(evt) 
    }; 
} 

function onOpen(evt) { 
    writeToScreen("CONNECTED"); 
    doSend("WebSocket rocks"); 
} 

function onClose(evt) { 
    writeToScreen("DISCONNECTED"); 
} 

function onMessage(evt) { 
    writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data + '</span>'); 
    websocket.close(); 
} 

function onError(evt) { 
    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); 
} 

function doSend(message) { 
    writeToScreen("SENT: " + message); 
    websocket.send(message); 
} 

function writeToScreen(message) { 
    var pre = document.createElement("p"); 
    pre.style.wordWrap = "break-word"; 
    pre.innerHTML = message; 
    output.appendChild(pre); 
} 
+1

コード全体を見てみたいですか?なぜ 'クラス' 'メソッド'と '変数'が最初であるのか、どうして "変数を渡す"さえどういうことかを知りませんでしたか? –

答えて

0

あなたはevent handlersを探しています。

testWebSocket関数は、wsUriへのWebSocket接続を作成しようとします。

接続が正常に開かれると、onOpen関数が呼び出されます。 WebSocket接続がメッセージを受信するたびに、onMessage関数が呼び出され、一度接続が閉じられると、onCloseが実行されます。

いずれかが間違っている場合は、onError関数が実行されます。

接続が確立されていないため、表示されているエラーが表示されているだけで、onErrorが呼び出されています。

関連する問題