有什么办法可以停止从Socket.io进行侦听吗?

时间:2020-01-21 14:12:56

标签: javascript socket.io

我尝试停止在socket.io中监听。 例如,就我而言,我是从这样的套接字获取数据的。

Socket.on('event', function(data) {}}

如何停止在socket.io中监听? 谢谢

3 个答案:

答案 0 :(得分:5)

要取消订阅事件的所有听众

socket.off('event-name');

要取消订阅某个收听者

socket.off('event-name', listener);

或者您也可以使用以下内容,

socket.removeListener(eventName, listener)
socket.removeAllListeners([eventName])

参考:https://socket.io/docs/server-api/#socket-removeListener-eventName-listener

答案 1 :(得分:4)

要关闭连接:

socket.close()socket.disconnect()

返回套接字

手动断开套接字。

要停止收听某些特定的收听者

socket.off('event', function(){})

解除绑定指定的事件处理程序(与.on()相反)。

如果您决定使用此方法,请当心! socket.off()不会阻止此客户端套接字接收任何服务器发送的消息,它只是阻止触发指定的事件处理程序。

实际上,套接字实例继承了Emitter类(https://github.com/component/emitter)中的每个方法,因此您可以使用.hasListeners().once()并且已经说过.off()(删除特定的事件监听器。

在这里您可以找到有关这些方法和其他Socket.io方法的不错的文档:https://sailsjs.com/documentation/reference/web-sockets/socket-client/io-socket-on

答案 2 :(得分:2)

还可以使用“关闭”功能。

  1. socket.off('news'); //停止收听“新闻”事件

  2. socket.off('news',myFunction); //如果有多个 相同事件的侦听器socket.off(); //停止收听所有事件