如何取消订阅 socket.io?
- 论坛
- 如何取消订阅 socket.io?
9 浏览
如何取消订阅 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;