/ / É webSocket.onopen neste exemplo um retorno de chamada? Como funciona? - html5, websocket, retorno de chamada

O webSocket.onopen neste exemplo é um retorno de chamada? Como funciona? - html5, websocket, retorno de chamada

Eu serei breve. Estou tentando entender como evt está sendo passado para 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);
}

Eu aprendi que posso realizar a mesma coisa com jQuery:

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

Pelo que entendi, os dois são callbacks. Eu tenho usado principalmente callbacks assim:

function(callback) {
callback();
}

O exemplo inicial não parece tão claro para mim, talvez porque eu não esteja acostumado com o JavaScript simples, ou há algo mais que eu estou perdendo por completo.

Respostas:

0 para resposta № 1
webSocket.onopen = function (evt) {
onOpen(evt);
}

evt é passado pelo websocket. no código acima você está definindo uma função de ouvinte em websocket em aberto. Isso significa que quando o websocket é aberto, a função atribuída a webSocket.onopen será chamado. assim como onMessage ou onClose. Não há necessidade real de escrever outra onOpen(evt) , faça suas coisas assim:

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

é quase semelhante ao padrão observador. você pode verificar o padrão do observador para ver como isso funciona exatamente internamente. Resumidamente, neste tipo de exemplos, trata-se de atribuir um método (função) a uma referência a ser chamada quando algo acontece.