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] = {
|
this.subscriptions_[subject] = {
|
||||||
'messages': [],
|
'messages': [],
|
||||||
|
'keys': {},
|
||||||
};
|
};
|
||||||
this.sendRPC_('subscribe', {
|
this.sendRPC_('subscribe', {
|
||||||
'subject': subject,
|
'subject': subject,
|
||||||
@@ -115,11 +116,23 @@ Cosmopolite.prototype.sendMessage = function(subject, message, key) {
|
|||||||
* Fetch all received messages for a subject
|
* Fetch all received messages for a subject
|
||||||
*
|
*
|
||||||
* @param {!string} subject Subject name
|
* @param {!string} subject Subject name
|
||||||
|
* @const
|
||||||
*/
|
*/
|
||||||
Cosmopolite.prototype.getMessages = function(subject) {
|
Cosmopolite.prototype.getMessages = function(subject) {
|
||||||
return this.subscriptions_[subject].messages;
|
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.
|
* Callback when a script loads.
|
||||||
*/
|
*/
|
||||||
@@ -371,6 +384,9 @@ Cosmopolite.prototype.onServerEvent_ = function(e) {
|
|||||||
}
|
}
|
||||||
e['message'] = JSON.parse(e['message']);
|
e['message'] = JSON.parse(e['message']);
|
||||||
subscription.messages.push(e);
|
subscription.messages.push(e);
|
||||||
|
if (e['key']) {
|
||||||
|
subscription.keys[e['key']] = e;
|
||||||
|
}
|
||||||
if ('onMessage' in this.callbacks_) {
|
if ('onMessage' in this.callbacks_) {
|
||||||
this.callbacks_['onMessage'](e);
|
this.callbacks_['onMessage'](e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user