我对javascript很新,只知道基本知识。任何人都可以解释下面的代码,就像在调用init函数时它出现的流程一样?
我对以下代码的理解是,一旦调用了init函数,就会设置一个全局变量输出,该输出映射到具有id输出的HTML元素。然后它调用testWebSocket javascript function
。这将创建一个WebSocket对象。在此之后是我完全不理解的部分。
如果我对以下内容的理解是正确的,请纠正我。
在行websocket.open = function(evt) { onOpen(evt) };
中,WebSocket对象有一个名为open的属性,我们将其设置为
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);
}
答案 0 :(得分:0)
您正在查看event handlers。
testWebSocket
函数尝试创建与wsUri
的WebSocket连接。
成功打开该连接后,将调用onOpen
函数。
只要WebSocket连接收到消息,就会调用onMessage
函数,一旦连接关闭,onClose
就会执行。
如果出现任何问题,onError
函数将会执行。
您可能只看到显示错误,因为无法建立连接,因此onError
是唯一被调用的内容。