2016-09-06 71 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)設置?

第二個問題:

下面是其中執行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

你想要我們通過整個代碼?爲什麼不學習'class''方法'和'變量'是什麼,甚至可能是「如何傳遞一個變量」,你有沒有搜索過這些? –

回答

0

您正在尋找event handlers

testWebSocket函數嘗試創建一個到wsUri的WebSocket連接。

一旦連接成功打開,將調用onOpen函數。 每當WebSocket連接收到消息時,將調用onMessage函數,並且一旦連接關閉onClose將執行。

如果出現任何錯誤,則執行onError函數。

您可能只會看到顯示的錯誤,因爲連接無法建立,因此onError是唯一被調用的。

相關問題