Предположим, что есть объекты, которые подписываются на сервер сокетов следующим образом:
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;