如何停止监听socket.io频道?

13
在socket.io中,您可以像这样绑定到一个socket事件/通道:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://localhost');
   socket.on('news', function (data) {
   console.log(data);
   socket.emit('my other event', { my: 'data' });
 });
</script>

但是,你如何停止聆听“新闻”事件呢?


请查看此答案:https://dev59.com/dWox5IYBdhLWcg3wIQ1o - Gaurav Singla
3个回答

28
尝试使用 socket.removeAllListeners("news");

谢谢,我从 Gaurav 发的帖子中得到了那个答案,但他从未将其作为答案发布。 - Tim Fairbrother

10

off函数也可用。

  • socket.off('news'); // 停止监听 "news" 事件
  • socket.off('news', myFunction); // 如果您对同一事件有多个侦听器,则此功能很有用
  • socket.off(); // 停止监听所有事件



来源

根据Socket.io客户端文档,"套接字实际上继承了Emitter类的每种方法,例如hasListenersonceoff(以删除事件侦听器)"。

Emitter文档

  • 传递eventfn以删除侦听器。
  • 传递event以删除该事件上的所有侦听器。
  • 传递空值以删除所有事件上的所有侦听器。

1
同样适用于Android。 :) - CoolMind

1
如果您想仅移除特定事件,可以尝试使用socket.removeListener('you_event');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接