Skip to content

Compliance

This section describes how compliant is Bondy's WAMP implementation.

Overview

Bondy tries to be as compliant as possible with the WAMP Specification. However, because the specification was not designed from the ground up to consider a distributed router there are some requirements we cannot (and/or we do not want to) be compliant with.

The following two sections go into a detail compliance analysis listing what WAMP features Bondy implement and those cases in which Bondy does not comply with the Specification. In those particular cases you will also find an explanation of the rationale and the roadmap behind them.

Basic Profile

General Features

FeatureStatusExtensionsRoadmap
Web Socket transport✔️
Batched Web Socket transportYes
Raw Socket transport✔️
Longpoll transport
Transport and Session Lifetime✔️
Each session establishes a new transport connection
Close session and connection on protocol errors✔️
Serializations: Support JSON and Msgpack✔️BERT, Erlang (subset)CBOR, Flatbuffers
Validation of custom attribute keys using regex✔️
No Polymorphism, avoid empty arguments and keyword arguments✔️
Agent Identification✔️
Session Meta API✔️

Pub/Sub Features

FeatureStatusExtensionsRoadmap
Ordering GuaranteesPartial, see NC1Yes
Subscription (and Subscription ID) to be shared amongst subscribers to the same topic.
see NC2
No

Routed RPC Features

FeatureStatusExtensionsRoadmap
Registration (and Registration ID) to be shared amongst callees
see NC2
No

Advanced Profile

General Features

FeatureStatusExtensionsRoadmap
Challenge-response authentication✔️
Ticket authentication✔️Allows Single Sign-on to multiple realms
Cookie authenticationNo

Pub/Sub Features

FeatureStatusExtensionsRoadmap
Subscriber black-/white-listing✔️
Publisher exclusion✔️
Publisher identification✔️
Publication trust-levels✔️
Subscription Meta API✔️
Pattern-based subscription✔️
Sharded subscriptionYes
Event historyYes
Topic reflectionYes

Routed RPC Features

FeatureStatusExtensionsRoadmap
Call Timeout✔️
Call Canceling✔️
Caller Identification✔️
Call Trust-levels✔️
Registration Meta API✔️
Pattern-based Registration✔️
Shared Registration✔️
Sharded RegistrationYes
Registration RevocationYes
Procedure ReflectionYes
Progressive Call ResultsYes
Progressive CallsYes

Non-compliance Cases

NC1

Pub/Sub: Ordering Guarantees

The ordering guarantees are as follows:

If Subscriber A is subscribed to both Topic 1 and Topic 2, and Publisher B first publishes an Event 1 to Topic 1 and then an Event 2 to Topic 2, then Subscriber A will first receive Event 1 and then Event 2. This also holds if Topic 1 and Topic 2 are identical.

In other words, WAMP guarantees ordering of events between any given pair of Publisher and Subscriber.

Further, if Subscriber A subscribes to Topic 1, the SUBSCRIBED message will be sent by the Broker to Subscriber A before any EVENT message for Topic 1.

There is no guarantee regarding the order of return for multiple subsequent subscribe requests. A subscribe request might require the Broker to do a time-consuming lookup in some database, whereas another subscribe request second might be permissible immediately.

NC2

Pub/Sub: Subscription (and Subscription ID) to be shared amongst subscribers to the same topic

The WAMP protocol requires a subscription to be shared amogst subscribers to the same topic.

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. When an second subscriber issues a subscription request for the same topic, then it receives the same subscription ID.

NC3

Pub/Sub: Registration (and Registration ID) to be shared amongst callees

The WAMP protocol requires a registration to be shared amogst callees to the same procedure.

A registration is created when a client sends a registration request for a procedure where there are currently no other callees. It is deleted when the last callee cancels its registration, or its session is disconnected.

A callee receives a registration ID as the result of a successful registration request. When an second callee issues a registration request for the same procedure, then it receives the same registration ID.

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution-ShareAlike (CC-BY-SA) 4.0 International license.
Bondy and Leapsight are registered trademarks of Leapsight Technologies Ltd.