Wenn Sie sich anmelden, verwendet der Client eine Subscription Stream, um auf verschiedene Ereignisse zu warten. Die Ereignisse, an denen wir interessiert sind, sind die update
und unsubscribe
Ereignisse. Wenn Sie abonnieren, weisen Sie den Stream automatisch an, auf die Ereignisse update
zu warten.
Wenn Sie mehr als einmal abonniert haben, können Sie, je nachdem, wie Sie dies getan haben, mehrere Streams erstellen, von denen jeder update
Ereignisse erhält.
Zum Beispiel öffnet sich die folgenden zwei Ströme:
subscription = session.subscribe('test/topic').transform(String)
.on('update', function(value, topicName) {
console.log('Got update for topic: ' + topicName, value);
});
subscription2 = session.subscribe('test/topic').transform(String)
.on('update', function(value, topicName) {
console.log('Got update for topic: ' + topicName, value);
});
Während die erst nach einem Stream öffnet:
subscription = session.subscribe('test/topic').transform(String)
.on('update', function(value, topicName) {
console.log('Got update for topic: ' + topicName, value);
});
session.unsubscribe('test/topic');
session.subscribe('test/topic');
Wenn der Client abmeldet zu einem Thema alle der Ströme für dieses Thema nicht mehr Höre auf update
Ereignisse. Wenn der Client jedoch erneut subskribiert wird, werden alle Streams für das Thema erneut auf update
Ereignisse warten.
Es ist möglich, den Stream zu schließen, wenn Sie abmelden, so dass er nicht wieder auf Updates wartet, wenn Sie wieder subscribe
. Dies wird erreicht, indem auf das Ereignis unsubscribe
im Stream gewartet wird und close() im Stream aufgerufen wird.
Zum Beispiel:
subscription = session.subscribe('test/topic').transform(String)
.on('update', function(value, topicName) {
console.log('Got update for topic: ' + topicName, value);
});
subscription.on('unsubscribe', function(reason, topic) {
console.log('Unsubscribed from topic:' + topic);
subscription.close();
});
subscription2 = session.subscribe('test/topic').transform(String)
.on('update', function(value, topicName) {
console.log('Got update for topic: ' + topicName, value);
});
session.unsubscribe('test/topic');
session.subscribe('test/topic');
In diesem Beispiel, wenn unsubscribe
subscription
genannt wird, ist geschlossen. Wenn subscribe
anschließend aufgerufen wird, wartet nur Abonnement2 auf Updates.
Dieser Code kann auch kurz und bündig mit Objektliterale ausgedrückt werden:
subscription = session.subscribe('test/topic').transform(String).on({
update : function(update, topic) {
console.log('Got update for topic: ' + topic, update);
},
unsubscribe : function(reason, topic) {
console.log('Unsubscribed from : ' + topic);
subscription.close();
}
});
subscription2 = session.subscribe('test/topic').transform(String).on({
update : function(update, topic) {
console.log('Got update for topic: ' + topic, update);
}
});
session.unsubscribe('test/topic');
session.subscribe('test/topic');