From 300ae386621fa53c44989f3fa6937adc159d5071 Mon Sep 17 00:00:00 2001 From: Eduardo-M-Cavalcanti Date: Tue, 17 Nov 2015 11:41:25 -0200 Subject: [PATCH 1/2] =Avoids duplicated registration of event handler --- ng-websocket.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ng-websocket.js b/ng-websocket.js index ca65608..c5d85a8 100644 --- a/ng-websocket.js +++ b/ng-websocket.js @@ -200,7 +200,8 @@ me.$$eventMap[event] = me.$$eventMap[event] || []; for (var i = 0; i < handlers.length; i++) { - me.$$eventMap[event].push(handlers[i]); + if (me.$$eventMap[event].indexOf(handlers[i]) < 0) + me.$$eventMap[event].push(handlers[i]); } return me; From e0f43587f53fa68244a4d1f651b89cbe4a22b475 Mon Sep 17 00:00:00 2001 From: Eduardo-M-Cavalcanti Date: Tue, 17 Nov 2015 12:04:11 -0200 Subject: [PATCH 2/2] Optional deregistration of event handlers. Allows deregistration of multiple handlers with the same call. --- ng-websocket.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/ng-websocket.js b/ng-websocket.js index c5d85a8..41fe976 100644 --- a/ng-websocket.js +++ b/ng-websocket.js @@ -207,12 +207,29 @@ return me; }; - me.$un = function (event) { + me.$un = function () { + + var handlers = [], index, eventMap; + + Array.prototype.push.apply(handlers, arguments); + + var event = handlers.shift(); + if (typeof event !== 'string') throw new Error('$un needs a String representing an event.'); - if (typeof me.$$eventMap[event] !== 'undefined') delete me.$$eventMap[event]; + if (handlers.length == 0) { + if (typeof me.$$eventMap[event] !== 'undefined') + delete me.$$eventMap[event]; + } + else { + for (var i = 0; i < handlers.length; i++) { + index = me.$$eventMap[event].indexOf(handlers[i]); - return me; + if (index >= 0 ) { + me.$$eventMap[event].splice(index, 1); + } + } + } }; me.$$send = function (message) {