假設有製作訂閱套接字服務器,像這樣的對象:如何取消訂閱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);
// ...and to unsubscribe
cbProxy = _blank;
這似乎工作,事件從SocketNamespace消失,雖然我還沒有做這方面的廣泛測試。你也是對的代理解決方案,所以它的更新爲它的幽默 – 2012-03-14 14:47:18
這不工作? WTF cbProxy是? – 2015-08-06 14:55:30
什麼不起作用? 'cbProxy'是OP定義的回調方法。 – 2015-08-11 03:04:58