Keep a client-side key index and add a lookup function.
This commit is contained in:
@@ -70,6 +70,7 @@ Cosmopolite.prototype.subscribe = function(subject, messages, keys) {
|
||||
}
|
||||
this.subscriptions_[subject] = {
|
||||
'messages': [],
|
||||
'keys': {},
|
||||
};
|
||||
this.sendRPC_('subscribe', {
|
||||
'subject': subject,
|
||||
@@ -115,11 +116,23 @@ Cosmopolite.prototype.sendMessage = function(subject, message, key) {
|
||||
* Fetch all received messages for a subject
|
||||
*
|
||||
* @param {!string} subject Subject name
|
||||
* @const
|
||||
*/
|
||||
Cosmopolite.prototype.getMessages = function(subject) {
|
||||
return this.subscriptions_[subject].messages;
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetch the most recent message that defined a key
|
||||
*
|
||||
* @param {!string} subject Subject name
|
||||
* @param {!string} key Key name
|
||||
* @const
|
||||
*/
|
||||
Cosmopolite.prototype.getKeyMessage = function(subject, key) {
|
||||
return this.subscriptions_[subject].keys[key];
|
||||
};
|
||||
|
||||
/**
|
||||
* Callback when a script loads.
|
||||
*/
|
||||
@@ -371,6 +384,9 @@ Cosmopolite.prototype.onServerEvent_ = function(e) {
|
||||
}
|
||||
e['message'] = JSON.parse(e['message']);
|
||||
subscription.messages.push(e);
|
||||
if (e['key']) {
|
||||
subscription.keys[e['key']] = e;
|
||||
}
|
||||
if ('onMessage' in this.callbacks_) {
|
||||
this.callbacks_['onMessage'](e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user