APPSTATE refactoring:

- Make index.html cacheable by being stateless
- Improve compression (base64 doesn't gzip well)
- Remove base64 encoding/decoding step
- Make AppState injectable so it can be unit tested
- Ready to remove the global leakage
This commit is contained in:
Gunther Brunner
2014-08-22 15:04:16 +09:00
parent 743f8becd6
commit e27e17d699
9 changed files with 92 additions and 51 deletions

View File

@@ -1,46 +1,42 @@
var io = require('socket.io')
module.exports = function SocketFactory($rootScope, VersionUpdateService) {
/*globals APPSTATE:false*/
//TODO: Refactor APPSTATE to AppStateConstant
var websocketUrl = APPSTATE && APPSTATE.config &&
APPSTATE.config.websocketUrl ? APPSTATE.config.websocketUrl : ''
module.exports =
function SocketFactory($rootScope, VersionUpdateService, AppState) {
var websocketUrl = AppState.config.websocketUrl || ''
var socket = io(websocketUrl, {
reconnection: false
, transports: ['websocket']
})
var socket = io(websocketUrl, {
reconnection: false, transports: ['websocket']
})
socket.scoped = function($scope) {
var listeners = []
socket.scoped = function ($scope) {
var listeners = []
$scope.$on('$destroy', function() {
listeners.forEach(function(listener) {
socket.removeListener(listener.event, listener.handler)
$scope.$on('$destroy', function () {
listeners.forEach(function (listener) {
socket.removeListener(listener.event, listener.handler)
})
})
return {
on: function (event, handler) {
listeners.push({
event: event, handler: handler
})
socket.on(event, handler)
return this
}
}
}
socket.on('outdated', function () {
VersionUpdateService.open()
})
socket.on('socket.ip', function (ip) {
$rootScope.$apply(function () {
socket.ip = ip
})
})
return {
on: function(event, handler) {
listeners.push({
event: event
, handler: handler
})
socket.on(event, handler)
return this
}
}
return socket
}
socket.on('outdated', function () {
VersionUpdateService.open()
})
socket.on('socket.ip', function(ip) {
$rootScope.$apply(function() {
socket.ip = ip
})
})
return socket
}