如何取消订阅 socket.io?

9 浏览
0 Comments

如何取消订阅 socket.io?

假设有一些对象订阅了一个套接字服务器,像这样:

socket.on('news', obj.socketEvent)

这些对象的生命周期很短,经常被创建,生成许多订阅。这似乎是一个内存泄漏和容易出错的情况,直观上应该在对象被删除之前通过以下方式防止:

socket.off('news', obj.socketEvent)

但遗憾的是,套接字中没有一个off方法。是否有另一种方法来解决这个问题呢?

编辑:没有找到答案,我将一个空方法分配给覆盖原始事件处理程序的包装方法,以下是一个示例。

var _blank = function(){};
var cbProxy = function(){
    obj.socketEvent.apply(obj, arguments)
};
var cbProxyProxy = function(){
    cbProxy.apply ({}, arguments)
}
socket.on('news', cbProxyProxy);
// ...并且取消订阅 
cbProxy = _blank;

0