Skip to content

Instantly share code, notes, and snippets.

@ralyodio
Forked from anonymous/chat-controller.js
Last active August 29, 2015 14:24
Show Gist options
  • Save ralyodio/acffa1fe5a6a8520e392 to your computer and use it in GitHub Desktop.
Save ralyodio/acffa1fe5a6a8520e392 to your computer and use it in GitHub Desktop.
//usage
app.controller('ChatCtrl', ['socket', function(socket){
socket.on('chat:messages', function(data){
$log.log('chat:messages', data);
$scope.messages = data.messages;
});
}]);
//socket service
//angular.module('services').factory('socket', [...]);
//then register the 'services' module to use it
app.factory('socket', ['$rootScope', '$log', '$timeout', function ($rootScope, $log, $timeout) {
var socket = io.connect();
$log.log('io', io);
$log.log('socket', socket);
socket.on('connect', function() {
$log.log('Connected!', arguments);
});
socket.on('error', function() {
$log.log('Error!', arguments);
});
socket.on('disconnect', function(){
$log.log("Disconnect!", arguments);
});
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$timeout(function () {
callback.apply(socket, args);
}, 0);
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
},
remove: function(name) {
socket.removeAllListeners(name);
}
};
}]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment