Changeset View
Changeset View
Standalone View
Standalone View
support/aphlict/server/lib/AphlictClientServer.js
Show All 10 Lines | |||||
JX.install('AphlictClientServer', { | JX.install('AphlictClientServer', { | ||||
construct: function(server) { | construct: function(server) { | ||||
server.on('request', JX.bind(this, this._onrequest)); | server.on('request', JX.bind(this, this._onrequest)); | ||||
this._server = server; | this._server = server; | ||||
this._lists = {}; | this._lists = {}; | ||||
this._adminServers = []; | |||||
}, | }, | ||||
properties: { | properties: { | ||||
logger: null, | logger: null, | ||||
adminServers: null | |||||
}, | }, | ||||
members: { | members: { | ||||
_server: null, | _server: null, | ||||
_lists: null, | _lists: null, | ||||
getListenerList: function(instance) { | getListenerList: function(instance) { | ||||
if (!this._lists[instance]) { | if (!this._lists[instance]) { | ||||
this._lists[instance] = new JX.AphlictListenerList(instance); | this._lists[instance] = new JX.AphlictListenerList(instance); | ||||
} | } | ||||
return this._lists[instance]; | return this._lists[instance]; | ||||
}, | }, | ||||
getHistory: function(age) { | |||||
var results = []; | |||||
var servers = this.getAdminServers(); | |||||
for (var ii = 0; ii < servers.length; ii++) { | |||||
var messages = servers[ii].getHistory(age); | |||||
for (var jj = 0; jj < messages.length; jj++) { | |||||
results.push(messages[jj]); | |||||
} | |||||
} | |||||
return results; | |||||
}, | |||||
log: function() { | log: function() { | ||||
var logger = this.getLogger(); | var logger = this.getLogger(); | ||||
if (!logger) { | if (!logger) { | ||||
return; | return; | ||||
} | } | ||||
logger.log.apply(logger, arguments); | logger.log.apply(logger, arguments); | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | listen: function() { | ||||
case 'unsubscribe': | case 'unsubscribe': | ||||
log( | log( | ||||
'Unsubscribed from: %s', | 'Unsubscribed from: %s', | ||||
JSON.stringify(message.data)); | JSON.stringify(message.data)); | ||||
listener.unsubscribe(message.data); | listener.unsubscribe(message.data); | ||||
break; | break; | ||||
case 'replay': | |||||
var age = message.data.age || 60000; | |||||
var min_age = (new Date().getTime() - age); | |||||
var old_messages = self.getHistory(min_age); | |||||
for (var ii = 0; ii < old_messages.length; ii++) { | |||||
var old_message = old_messages[ii]; | |||||
if (!listener.isSubscribedToAny(old_message.subscribers)) { | |||||
continue; | |||||
} | |||||
try { | |||||
listener.writeMessage(old_message); | |||||
} catch (error) { | |||||
break; | |||||
} | |||||
} | |||||
break; | |||||
default: | default: | ||||
log( | log( | ||||
'Unrecognized command "%s".', | 'Unrecognized command "%s".', | ||||
message.command || '<undefined>'); | message.command || '<undefined>'); | ||||
} | } | ||||
}); | }); | ||||
ws.on('close', function() { | ws.on('close', function() { | ||||
Show All 9 Lines |