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

Posted

技术标签:

【中文标题】如何停止收听 socket.io 频道?【英文标题】:How do you stop listening to a socket.io channel? 【发布时间】:2013-10-13 14:10:49 【问题描述】:

在 socket.io 中,您可以像这样绑定到套接字事件/通道:

<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>

但是您如何停止收听“新闻”事件?

【问题讨论】:

看看这个答案***.com/questions/9418697/… 【参考方案1】:

试试看,socket.removeAllListeners("news");

【讨论】:

谢谢,我是从 Gaurav 发布的帖子中得到的,但他从未将其作为答案。【参考方案2】:

off函数也可以使用。

socket.off('news'); // stops listening to the "news" event socket.off('news', myFunction); // useful if you have multiple listeners for the same event socket.off(); // stops listening to all events


来源

根据Socket.io Client Documentation“套接字实际上继承了Emitter类的每个方法,如hasListenersonceoff(删除事件监听器)。”

Emitter documentation:

传递 eventfn 以删除侦听器。 传递 event 以删除该事件的所有侦听器。 不传递任何内容以删除所有事件的所有侦听器。

【讨论】:

android 也是如此。 :)【参考方案3】:

如果您只想删除特定事件,可以尝试socket.removeListener('you_event');

【讨论】:

以上是关于如何停止收听 socket.io 频道?的主要内容,如果未能解决你的问题,请参考以下文章

使用 socket.io 和 Laravel Echo 时如何保护私有频道?

如何通过 socks5 代理使用 JavaScript socket.io-client 库?

Pubnub Socket.io - 与频道断开连接

如何使用 Flask 和 Socket.io 加入和离开房间的简明示例?

Socket.IO 订阅多个频道

Laravel 使用 Socket.io 广播到私人频道