Javascript WebSocket收集回调
单击#ws show log-我会看到来自webSocket的所有消息:Javascript WebSocket收集回调,javascript,websocket,Javascript,Websocket,单击#ws show log-我会看到来自webSocket的所有消息: $('#ws-show-log').click(function(){ var webSocket = new WebSocket('ws://myhost.loc:8080'); webSocket.onopen = function() { console.log('onopen'); }; webSocket.onmessage = function(event) { console.
$('#ws-show-log').click(function(){
var webSocket = new WebSocket('ws://myhost.loc:8080');
webSocket.onopen = function() {
console.log('onopen');
};
webSocket.onmessage = function(event) {
console.log('onmessage: ' + event.data);
};
webSocket.onclose = function() {
console.log('onclose');
};
webSocket.onerror = function() {
console.log('onerror');
};
});
但当我第二次单击#ws show log in console时,所有消息都被复制,我看到:
onopen
onmessage message1
onmessage message2
如果只想建立一次到websocket的连接,可以使用jQuery的once()处理程序 像这样使用它
onopen
onmessage message1
onmessage message1
onmessage message2
onmessage message2
如果每次单击
#ws show log
时都要建立与服务器的新连接,则应在使用该连接后关闭该连接。否则,连接将保持打开状态,并且每次单击#ws show log
都将导致与服务器的额外连接
您可以使用WebSocket.close()关闭WebSocket代码>。您可以将此关闭函数放入onmessage
处理程序中。现在,当您收到来自服务器的消息时,WebSocket将被关闭
您可以这样做:
$('#ws-show-log').once('click', function() {
// inner code
}
thnx@David,但在创建新连接之前,关闭旧连接时所有操作都有效
webSocket.onmessage = function(event) {
console.log('onmessage: ' + event.data);
webSocket.close();
};
这样地?webSocket.onmessage=函数(事件){console.log('onmessage:'+event.data);webSocket.close();};我如何从Websocket获得下一条消息?每次单击“ws show log”都可以获得下一条消息。因为您已经在每次单击时建立到服务器的连接。否,我单击(一次)并查看websocket日志,我希望查看来自websocket的所有消息。好的,我已更改了答案。看看这个方法,我认为它符合你的目的。
var webSocket;
$('#ws-show-log').click(function(){
if (webSocket) webSocket.close();
webSocket = new WebSocket('ws://myhost.loc:8080');
webSocket.onopen = function() {
console.log('onopen');
};
webSocket.onmessage = function(event) {
console.log('onmessage: ' + event.data);
};
webSocket.onclose = function() {
console.log('onclose');
};
webSocket.onerror = function() {
console.log('onerror');
};
});