这个例子中的webSocket.onopen是回调吗?它是如何工作的?

时间:2018-02-17 07:21:59

标签: html5 websocket callback

我会简短。我试图了解 evt 如何传递给 webSocket.onopen

wsUri = 'ws://echo.websocket.org/';
webSocket = new WebSocket(wsUri);

//How is evt actually passed?
webSocket.onopen = function (evt) { 
    onOpen(evt); 
}

function onOpen(evt) {
    writeOutput("CONNECTED");
}

function writeOutput(message) {
    var output = $('#divOutput');
    output.html(output.html() + '<br />' + message);
}

我了解到我可以用jQuery完成同样的事情:

//This approach I get
$(webSocket).on('open', function(evt) { 
    onOpen(evt); 
})

据我所知,这两个是回调。我一直主要使用这样的回调:

function(callback) {
    callback();
}

最初的例子对我来说似乎并不清楚,也许是因为我不习惯普通的JavaScript,或者还有其他我完全错过的东西。

1 个答案:

答案 0 :(得分:0)

webSocket.onopen = function (evt) { 
    onOpen(evt); 
}
websocket传递

evt。在上面的代码中,您将在opensocket上设置一个侦听器函数。这意味着当websocket打开时,将调用分配给webSocket.onopen的函数。就像onMessage或onClose一样。没有实际需要写另一个onOpen(evt),只需要做这样的事情:

webSocket.onopen = function (evt) { 
    writeOutput("CONNECTED");
    //other codes
}

它与观察者模式几乎相似。你可以检查观察者模式,看看这是如何在内部完全工作。简而言之,在这些类型的示例中,它涉及将方法(函数)分配给在事件发生时被调用的引用。