Files
sacrificial-socket/client/ng-ss.js

63 lines
1.5 KiB
JavaScript

(function(window){ 'use strict';
if(!window.angular){
throw 'angular not loaded';
return;
}
if(!window.SS){
throw 'sacrificial socket not loaded';
return;
}
window.angular.module('sacrificial-socket', [])
.factory('ss', ['$window', '$rootScope', '$log', function($window, $rootScope, $log){
function SSNG(url, opts){
var self = this,
socket = new $window.SS(url, opts);
self.onConnect = function(callback){
callback = callback || socket.noop;
socket.onConnect(function(){
var args = arguments;
$rootScope.$apply(function(){
callback.apply(self, args);
})
});
};
self.onDisconnect = function(callback){
callback = callback || socket.noop;
socket.onDisconnect(function(){
var args = arguments;
$rootScope.$apply(function(){
callback.apply(self, args);
});
});
};
self.on = function(eventName, callback){
callback = callback || socket.noop;
socket.on(eventName, function(){
var args = arguments;
$rootScope.$apply(function(){
callback.apply(self, args);
});
});
};
self.off = function(eventName){
return socket.off(eventName);
};
self.emit = function(eventName, data){
return socket.emit(eventName, data);
};
self.close = function(){
return socket.close();
};
}
return function(url, opts){ return new SSNG(url, opts); };
}]);
})(window);