How Subscriptions Work¶
With the Publish & Subscribe (PubSub) messaging pattern in WAMP, a WAMP client issues a subscription request to a router, in which it expresses interest in a topic. The router registers this. Whenever a publication to this topic comes in, an event is dispatched to all WAMP clients which are currently registered for the topic.
Note: WAMP uses URIs to identify topics. There are some specific rules regarding URI formatting.
For example, any WAMP client which has registered a subscription for the
com.myapp.topic1 receives an event whenever any other client
publishes to the topic
com.myapp.topic1. (The “any other” is
because as a default, no event is dispatched to the publisher itself if
it is subscribed to the topic. This behavior can be overriden by setting
PublishOptions when calling
The ‘subscription’, as the term is used here, exists within the router. A subscription is created when a client sends a subscription request for a topic where there are currently no other subscribers. It is deleted when the last subscriber cancels its subscriptions, or its session is disconnected.
A subscriber receives a subscription ID as the result of a successful
subscription request. E.g. say a client issues a subscription request
for a topic
com.myapp.topic1, it could receive the subscription ID
748038973 on success. This subscription ID is used as part of the
unsubscribe request, i.e. an unsubscribe does not contain a topic URI,
but a subscription ID.
When an second subscriber issues a subscription request for the same
topic, then it receives the same subscription ID. For
com.myapp.topic1, it would also receive
When the subscription is deleted, e.g. because the above two clients both issue an unsubscribe for the topic, and then a client issues a subscription request for the same topic, a new subscription is created, and the client receives a new subscription ID.
The act of subscribing and unsubscribing may create or delete a subscription. It necessarily adds or removes a session from a subscription.
The creation and deletion of subscriptions, as well as the addition or removal of sessions to a subscription lead to subscription meta-events, to which you can subscribe. It is also possible to retrieve information about currently existing subscriptions. For more information see Subscription Meta-Events and Procedures .
The above explanation used a topic string which was fully matched. WAMP additionally allows for pattern-based subscriptions in two flavors: prefix registration and wildcard registration. These are explained in Pattern-Based Subscriptions .
There is also the possibility to exclude certain sessions from receiving an event, or to restrict publication to a certain set of sessions - see Subscriber Black- and Whitelisting .
There is normally no need for subscribers to know the identity of a publisher, but if required it is possible to disclose this information - see Publisher Identification .
As a default, Publishers do not receive an event if they are also a Subsciber, but this can be overriden - see Publisher Exclusion .