如何停止收听 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类的每个方法,如hasListeners
、once
或off
(删除事件监听器)。”
Emitter documentation:
传递event
和fn
以删除侦听器。 传递event
以删除该事件的所有侦听器。 不传递任何内容以删除所有事件的所有侦听器。
【讨论】:
android 也是如此。 :)【参考方案3】:如果您只想删除特定事件,可以尝试socket.removeListener('you_event');
【讨论】:
以上是关于如何停止收听 socket.io 频道?的主要内容,如果未能解决你的问题,请参考以下文章
使用 socket.io 和 Laravel Echo 时如何保护私有频道?
如何通过 socks5 代理使用 JavaScript socket.io-client 库?