【问题标题】:Is there any way to stop the listening from Socket.io?有什么办法可以阻止 Socket.io 的监听?
【发布时间】:2020-01-21 14:12:56
【问题描述】:

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

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

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

【问题讨论】:

  • 我遇到了类似的问题,这篇文章对我有帮助。
  • 我遇到了这个问题,这篇文章对我很有帮助谢谢

标签: javascript socket.io


【解决方案1】:

取消订阅事件的所有侦听器

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

【讨论】:

  • 不错。我不记得removeAllListeners。酷
【解决方案2】:

关闭连接:

socket.close()socket.disconnect()

返回套接字

手动断开套接字。

停止收听某些特定的听众

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

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

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

实际上,一个socket实例继承了Emitter类(https://github.com/component/emitter)的每一个方法,所以你可以使用.hasListeners().once()和已经说过的.off()(去除特定的事件监听器)。

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

【讨论】:

    【解决方案3】:

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

    1. socket.off('news'); // 停止监听 "news" 事件

    2. socket.off('news', myFunction); // 如果你有多个有用 同一事件的监听器 socket.off(); // 停止监听所有事件

    【讨论】:

    • socket.off() stops listening to all events +1
    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多