监听 WebSocket 事件:socketTask.onOpen(res => {})、socketTask.onMessage(res => {})、socketTask.onClose(res => {}) 等 取消监听呢
时间: 2024-04-12 16:27:45 浏览: 260
取消监听 WebSocket 事件的方法是使用 socketTask.off(eventName, callback)。其中,eventName 为事件名称,例如 "open"、"message"、"close",callback 为要取消监听的回调函数。
示例代码如下所示:
```javascript
// 定义回调函数
const onOpenHandler = res => {
// 处理 onOpen 事件
};
// 监听 onOpen 事件
socketTask.onOpen(onOpenHandler);
// 取消监听 onOpen 事件
socketTask.off('open', onOpenHandler);
```
你可以根据需要分别使用 `socketTask.off('message', callback)` 和 `socketTask.off('close', callback)` 来取消监听其他 WebSocket 事件。
相关问题
socketTask.onOpen(res => {})、socketTask.onMessage(res => {})、socketTask.onClose(res => {}) 有什么区别 都怎么用
这三个方法是用于监听 WebSocket 的不同事件:
1. `socketTask.onOpen(res => {})`:用于监听 WebSocket 的连接建立事件(即连接成功事件)。当 WebSocket 连接建立成功时,会触发该事件,并执行回调函数。回调函数中的 `res` 参数可以包含一些连接建立相关的信息。
2. `socketTask.onMessage(res => {})`:用于监听 WebSocket 收到消息事件。当 WebSocket 接收到消息时,会触发该事件,并执行回调函数。回调函数中的 `res` 参数包含接收到的消息内容。
3. `socketTask.onClose(res => {})`:用于监听 WebSocket 关闭事件。当 WebSocket 连接关闭时,会触发该事件,并执行回调函数。回调函数中的 `res` 参数可以包含一些关闭相关的信息。
这些方法的使用方式相似。你可以通过以下示例代码来理解如何使用这些方法:
```javascript
// 监听连接建立事件
socketTask.onOpen(res => {
console.log('WebSocket 连接建立成功');
console.log(res);
});
// 监听收到消息事件
socketTask.onMessage(res => {
console.log('收到消息');
console.log(res.data);
});
// 监听连接关闭事件
socketTask.onClose(res => {
console.log('WebSocket 连接关闭');
console.log(res);
});
```
在上述示例中,我们分别使用了 `onOpen`、`onMessage`、`onClose` 方法来监听不同的 WebSocket 事件,并传入相应的回调函数。当对应的事件发生时,回调函数会被执行。你可以根据实际需求在回调函数中执行相应的逻辑。
function websocketTo(serverIp) { let websocket = new WebSocket('ws://' + serverIp + '/pager?mac=' + config.mac) websocket.onopen = event => { console.log('WebSocket:连接成功', event) } websocket.onmessage = event => { console.log('WebSocket:收到消息', event.data) eventbus.publish('websocket', event.data) } websocket.onerror = event => { console.log('WebSocket:连接错误', event) websocket.close(1000, '关闭并重连') } websocket.onclose = event => { console.log('WebSocket:连接关闭', event) setTimeout(() => { websocketTo(serverIp) }, 10000) eventbus.publish('websocket', 'closed') } }
这是一个用于建立WebSocket连接并处理连接状态的函数`websocketTo(serverIp)`。该函数接受一个`serverIp`参数,用于指定WebSocket服务器的IP地址。
在函数内部,使用`new WebSocket()`创建一个WebSocket对象,并通过指定的`serverIp`和其他参数创建连接。在连接建立成功时,会触发`onopen`事件,并在控制台打印连接成功的消息。
当接收到WebSocket服务器发送的消息时,会触发`onmessage`事件,并在控制台打印收到的消息。同时,通过`eventbus.publish('websocket', event.data)`将收到的消息发布到`websocket`事件上,以便其他订阅了该事件的代码可以进行相应处理。
如果发生连接错误,会触发`onerror`事件,并在控制台打印连接错误的消息。然后,调用`websocket.close()`方法关闭WebSocket连接,并传递关闭码和原因。
当连接关闭时,会触发`onclose`事件,并在控制台打印连接关闭的消息。然后,通过`setTimeout()`函数延迟10秒后再次调用`websocketTo(serverIp)`函数重新建立连接。同时,通过`eventbus.publish('websocket', 'closed')`将连接关闭的消息发布到`websocket`事件上。
这个函数主要用于处理WebSocket连接的建立、消息的收发以及连接状态的处理。
阅读全文