WebSocket 收集回调
WebSocket collect callbacks
$('#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时 - 我看到来自webSocket运河的所有消息:
onopen
onmessage message1
onmessage message2
但是当我在控制台中第二次单击 #ws 显示登录时,所有消息都是重复的,我看到:
onopen
onmessage message1
onmessage message1
onmessage message2
onmessage message2
如果你想建立一次与websocket的连接,你可以使用jQuery的once((处理程序。
像这样使用它
$('#ws-show-log').once('click', function() {
// inner code
}
如果要在每次单击时都与服务器建立新连接 #ws-show-log
,则应在使用后关闭连接。否则,连接将保持打开状态,每次单击#ws-show-log
都会导致与您的服务器的额外连接。
您可以使用 webSocket.close();
关闭 WebSocket。您可以将此关闭函数放在onmessage
处理程序中。现在,当您收到来自服务器的消息时,WebSocket 将被关闭。
你可以这样做:
webSocket.onmessage = function(event) {
console.log('onmessage: ' + event.data);
webSocket.close();
};
thnx@David,但在创建新连接之前,所有连接在关闭旧连接时都可以工作。
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');
};
});
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- websocket示例程序:没有得到回调
- WebSocket 收集回调
- 节点.JS回调关闭 websocket
- WebSocket回调以答复消息
- 如何从WebSocket回调访问React中的组件方法
- Websocket节点回调
- 节点API回调与服务器websocket通信