blob: a16f70688a980519cea2246ee689a2c3df44819b [file] [log] [blame]
var io = require('socket.io')
module.exports = function SocketFactory(
$rootScope
, VersionUpdateService
, AppState
) {
var websocketUrl = AppState.config.websocketUrl || ''
var socket = io(websocketUrl, {
reconnection: false, transports: ['websocket']
})
socket.setWSId = function(wsId){
this.wsId = wsId;
}
socket.getWsId = function(){
return this.wsId;
}
socket.scoped = function($scope) {
var listeners = []
$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 socket
}