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 № 1webSocket.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.