どうにもsocket.ioのEvent Emitterのなかで$scopeにアクセスできないなと思ったら、どうもAngular.js の DI に突っ込んでおく必要があるようです。ということがHTML5 Rocksに書いてあったのでメモ。 具体的にはこんな感じ。 app.factory('socket', function ($rootScope) { var socket = io.connect(); return { on: function (eventName, callback) { socket.on(eventName, function () { var args = arguments; $rootScope.$apply(function () { callback.apply(socket, args); }); }); }, emit: function (eve