From 97608c4ecd18d8fdebd0388430a4b2ad8d30235f Mon Sep 17 00:00:00 2001 From: James Henry Date: Fri, 20 Feb 2015 12:05:41 +0000 Subject: [PATCH] Expose socketio reconnect method on socketFactory --- mock/socket-io.js | 5 ++++- socket.js | 4 ++++ socket.min.js | 2 +- socket.min.js.map | 2 +- socket.spec.js | 9 +++++++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/mock/socket-io.js b/mock/socket-io.js index 6678675..a9bc4a6 100644 --- a/mock/socket-io.js +++ b/mock/socket-io.js @@ -42,7 +42,10 @@ function createMockSocketObject () { } }, disconnect: function () {}, - connect: function () {} + connect: function () {}, + io: { + reconnect: function () {} + } }; return socket; diff --git a/socket.js b/socket.js index 649c416..1b9dc60 100644 --- a/socket.js +++ b/socket.js @@ -74,6 +74,10 @@ angular.module('btford.socket-io', []). return socket.connect(); }, + reconnect: function() { + return socket.io.reconnect(); + }, + // when socket.on('someEvent', fn (data) { ... }), // call scope.$broadcast('someEvent', data) forward: function (events, scope) { diff --git a/socket.min.js b/socket.min.js index 7c90e6b..9f3db0f 100644 --- a/socket.min.js +++ b/socket.min.js @@ -4,5 +4,5 @@ * (c) 2014 Brian Ford http://briantford.com * License: MIT */ -angular.module("btford.socket-io",[]).provider("socketFactory",function(){"use strict";var n="socket:";this.$get=["$rootScope","$timeout",function(t,e){var r=function(n,t){return t?function(){var r=arguments;e(function(){t.apply(n,r)},0)}:angular.noop};return function(e){e=e||{};var o=e.ioSocket||io.connect(),c=void 0===e.prefix?n:e.prefix,u=e.scope||t,i=function(n,t){o.on(n,t.__ng=r(o,t))},a=function(n,t){o.once(n,t.__ng=r(o,t))},s={on:i,addListener:i,once:a,emit:function(n,t,e){var c=arguments.length-1,e=arguments[c];return"function"==typeof e&&(e=r(o,e),arguments[c]=e),o.emit.apply(o,arguments)},removeListener:function(n,t){return t&&t.__ng&&(arguments[1]=t.__ng),o.removeListener.apply(o,arguments)},removeAllListeners:function(){return o.removeAllListeners.apply(o,arguments)},disconnect:function(n){return o.disconnect(n)},connect:function(){return o.connect()},forward:function(n,t){n instanceof Array==!1&&(n=[n]),t||(t=u),n.forEach(function(n){var e=c+n,u=r(o,function(){Array.prototype.unshift.call(arguments,e),t.$broadcast.apply(t,arguments)});t.$on("$destroy",function(){o.removeListener(n,u)}),o.on(n,u)})}};return s}}]}); +angular.module("btford.socket-io",[]).provider("socketFactory",function(){"use strict";var n="socket:";this.$get=["$rootScope","$timeout",function(t,e){var r=function(n,t){return t?function(){var r=arguments;e(function(){t.apply(n,r)},0)}:angular.noop};return function(e){e=e||{};var o=e.ioSocket||io.connect(),c=void 0===e.prefix?n:e.prefix,u=e.scope||t,i=function(n,t){o.on(n,t.__ng=r(o,t))},a=function(n,t){o.once(n,t.__ng=r(o,t))},s={on:i,addListener:i,once:a,emit:function(n,t,e){var c=arguments.length-1,e=arguments[c];return"function"==typeof e&&(e=r(o,e),arguments[c]=e),o.emit.apply(o,arguments)},removeListener:function(n,t){return t&&t.__ng&&(arguments[1]=t.__ng),o.removeListener.apply(o,arguments)},removeAllListeners:function(){return o.removeAllListeners.apply(o,arguments)},disconnect:function(n){return o.disconnect(n)},connect:function(){return o.connect()},reconnect:function(){return o.io.reconnect()},forward:function(n,t){n instanceof Array==!1&&(n=[n]),t||(t=u),n.forEach(function(n){var e=c+n,u=r(o,function(){Array.prototype.unshift.call(arguments,e),t.$broadcast.apply(t,arguments)});t.$on("$destroy",function(){o.removeListener(n,u)}),o.on(n,u)})}};return s}}]}); //# sourceMappingURL=socket.min.js.map \ No newline at end of file diff --git a/socket.min.js.map b/socket.min.js.map index f8dc9d0..1605905 100644 --- a/socket.min.js.map +++ b/socket.min.js.map @@ -1 +1 @@ -{"version":3,"file":"socket.min.js.map","sources":["socket.min.js"],"names":["angular","module","provider","defaultPrefix","this","$get","$rootScope","$timeout","asyncAngularify","socket","callback","args","arguments","apply","noop","options","ioSocket","io","connect","prefix","undefined","defaultScope","scope","addListener","eventName","on","__ng","addOnceListener","once","wrappedSocket","emit","data","lastIndex","length","removeListener","ev","fn","removeAllListeners","disconnect","close","forward","events","Array","forEach","prefixedEvent","forwardBroadcast","prototype","unshift","call","$broadcast","$on"],"mappings":";;;;;;AAOAA,QAAQC,OAAO,uBACbC,SAAS,gBAAiB,WAExB,YAGA,IAAIC,GAAgB,SAIpBC,MAAKC,MAAQ,aAAc,WAAY,SAAUC,EAAYC,GAE3D,GAAIC,GAAkB,SAAUC,EAAQC,GACtC,MAAOA,GAAW,WAChB,GAAIC,GAAOC,SACXL,GAAS,WACPG,EAASG,MAAMJ,EAAQE,IACtB,IACDX,QAAQc,KAGd,OAAO,UAAwBC,GAC7BA,EAAUA,KACV,IAAIN,GAASM,EAAQC,UAAYC,GAAGC,UAChCC,EAA4BC,SAAnBL,EAAQI,OAAuBhB,EAAgBY,EAAQI,OAChEE,EAAeN,EAAQO,OAAShB,EAEhCiB,EAAc,SAAUC,EAAWd,GACrCD,EAAOgB,GAAGD,EAAWd,EAASgB,KAAOlB,EAAgBC,EAAQC,KAG3DiB,EAAkB,SAAUH,EAAWd,GACzCD,EAAOmB,KAAKJ,EAAWd,EAASgB,KAAOlB,EAAgBC,EAAQC,KAG7DmB,GACFJ,GAAIF,EACJA,YAAaA,EACbK,KAAMD,EAENG,KAAM,SAAUN,EAAWO,EAAMrB,GAC/B,GAAIsB,GAAYpB,UAAUqB,OAAS,EAC/BvB,EAAWE,UAAUoB,EAKzB,OAJsB,kBAAZtB,KACRA,EAAWF,EAAgBC,EAAQC,GACnCE,UAAUoB,GAAatB,GAElBD,EAAOqB,KAAKjB,MAAMJ,EAAQG,YAGnCsB,eAAgB,SAAUC,EAAIC,GAI5B,MAHIA,IAAMA,EAAGV,OACXd,UAAU,GAAKwB,EAAGV,MAEbjB,EAAOyB,eAAerB,MAAMJ,EAAQG,YAG7CyB,mBAAoB,WAClB,MAAO5B,GAAO4B,mBAAmBxB,MAAMJ,EAAQG,YAGjD0B,WAAY,SAAUC,GACpB,MAAO9B,GAAO6B,WAAWC,IAG3BrB,QAAS,WACP,MAAOT,GAAOS,WAKhBsB,QAAS,SAAUC,EAAQnB,GACrBmB,YAAkBC,SAAU,IAC9BD,GAAUA,IAEPnB,IACHA,EAAQD,GAEVoB,EAAOE,QAAQ,SAAUnB,GACvB,GAAIoB,GAAgBzB,EAASK,EACzBqB,EAAmBrC,EAAgBC,EAAQ,WAC7CiC,MAAMI,UAAUC,QAAQC,KAAKpC,UAAWgC,GACxCtB,EAAM2B,WAAWpC,MAAMS,EAAOV,YAEhCU,GAAM4B,IAAI,WAAY,WACpBzC,EAAOyB,eAAeV,EAAWqB,KAEnCpC,EAAOgB,GAAGD,EAAWqB,MAK3B,OAAOhB"} \ No newline at end of file +{"version":3,"file":"socket.min.js.map","sources":["socket.min.js"],"names":["angular","module","provider","defaultPrefix","this","$get","$rootScope","$timeout","asyncAngularify","socket","callback","args","arguments","apply","noop","options","ioSocket","io","connect","prefix","undefined","defaultScope","scope","addListener","eventName","on","__ng","addOnceListener","once","wrappedSocket","emit","data","lastIndex","length","removeListener","ev","fn","removeAllListeners","disconnect","close","reconnect","forward","events","Array","forEach","prefixedEvent","forwardBroadcast","prototype","unshift","call","$broadcast","$on"],"mappings":";;;;;;AAOAA,QAAQC,OAAO,uBACbC,SAAS,gBAAiB,WAExB,YAGA,IAAIC,GAAgB,SAIpBC,MAAKC,MAAQ,aAAc,WAAY,SAAUC,EAAYC,GAE3D,GAAIC,GAAkB,SAAUC,EAAQC,GACtC,MAAOA,GAAW,WAChB,GAAIC,GAAOC,SACXL,GAAS,WACPG,EAASG,MAAMJ,EAAQE,IACtB,IACDX,QAAQc,KAGd,OAAO,UAAwBC,GAC7BA,EAAUA,KACV,IAAIN,GAASM,EAAQC,UAAYC,GAAGC,UAChCC,EAA4BC,SAAnBL,EAAQI,OAAuBhB,EAAgBY,EAAQI,OAChEE,EAAeN,EAAQO,OAAShB,EAEhCiB,EAAc,SAAUC,EAAWd,GACrCD,EAAOgB,GAAGD,EAAWd,EAASgB,KAAOlB,EAAgBC,EAAQC,KAG3DiB,EAAkB,SAAUH,EAAWd,GACzCD,EAAOmB,KAAKJ,EAAWd,EAASgB,KAAOlB,EAAgBC,EAAQC,KAG7DmB,GACFJ,GAAIF,EACJA,YAAaA,EACbK,KAAMD,EAENG,KAAM,SAAUN,EAAWO,EAAMrB,GAC/B,GAAIsB,GAAYpB,UAAUqB,OAAS,EAC/BvB,EAAWE,UAAUoB,EAKzB,OAJsB,kBAAZtB,KACRA,EAAWF,EAAgBC,EAAQC,GACnCE,UAAUoB,GAAatB,GAElBD,EAAOqB,KAAKjB,MAAMJ,EAAQG,YAGnCsB,eAAgB,SAAUC,EAAIC,GAI5B,MAHIA,IAAMA,EAAGV,OACXd,UAAU,GAAKwB,EAAGV,MAEbjB,EAAOyB,eAAerB,MAAMJ,EAAQG,YAG7CyB,mBAAoB,WAClB,MAAO5B,GAAO4B,mBAAmBxB,MAAMJ,EAAQG,YAGjD0B,WAAY,SAAUC,GACpB,MAAO9B,GAAO6B,WAAWC,IAG3BrB,QAAS,WACP,MAAOT,GAAOS,WAGhBsB,UAAW,WACT,MAAO/B,GAAOQ,GAAGuB,aAKnBC,QAAS,SAAUC,EAAQpB,GACrBoB,YAAkBC,SAAU,IAC9BD,GAAUA,IAEPpB,IACHA,EAAQD,GAEVqB,EAAOE,QAAQ,SAAUpB,GACvB,GAAIqB,GAAgB1B,EAASK,EACzBsB,EAAmBtC,EAAgBC,EAAQ,WAC7CkC,MAAMI,UAAUC,QAAQC,KAAKrC,UAAWiC,GACxCvB,EAAM4B,WAAWrC,MAAMS,EAAOV,YAEhCU,GAAM6B,IAAI,WAAY,WACpB1C,EAAOyB,eAAeV,EAAWsB,KAEnCrC,EAAOgB,GAAGD,EAAWsB,MAK3B,OAAOjB"} \ No newline at end of file diff --git a/socket.spec.js b/socket.spec.js index 5952d25..e229c80 100644 --- a/socket.spec.js +++ b/socket.spec.js @@ -67,6 +67,15 @@ describe('socketFactory', function () { }); + describe('#reconnect', function () { + + it('should call the underlying socket.io.reconnect', function () { + mockIoSocket.io.reconnect = spy; + socket.reconnect(); + expect(spy).toHaveBeenCalled(); + }); + + }); describe('#once', function () {