有人能解释一下下面的代码吗?



我对javascript相当陌生,只知道基本的。有人能解释下面的代码,因为它发生在流中,一旦init函数被调用?

我对下面代码的理解是,一旦init函数被调用,就会设置一个全局变量output,它被映射到一个带有id output的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);
}

您正在查看事件处理程序。

testWebSocket函数尝试创建一个到wsUri的WebSocket连接。

一旦连接成功打开,就调用onOpen函数。每当WebSocket连接接收到消息时,onMessage函数被调用,一旦连接关闭,onClose将执行。

如果其中任何一个出错,onError函数将执行。

您可能只看到错误显示,因为无法建立连接,因此,onError是唯一被调用的东西。

相关内容

  • 没有找到相关文章

最新更新