wamp2spring is a Java implementation of the WAMP specification built on top of the WebSocket support of Spring 5.
WAMP is a WebSocket subprotocol that provides two application messaging patterns: Remote Procedure Calls and Publish / Subscribe.
Implementation
wamp2spring implements the Basic Profile, but it does not support multiple realms in one application. Every connection, registration and subscription exists in the same realm and wamp2spring ignores the realm parameter of the HELLO message.
Additionally wamp2spring implements a few features from the Advanced Profile:
Feature | Remark |
---|---|
caller_identification | disclose_me option in the CALL message. Specification |
subscriber_blackwhite_listing | Exclude and include receivers with their WAMP session id. Only eligible and exclude options are implemented. Specification. |
publisher_exclusion | exclude_me option in the PUBLISH message. By default the publisher is excluded from receiving the EVENT message. Specification |
publisher_identification | disclose_me option in the PUBLISH message. Specification |
pattern_based_subscription | Prefix- and wildcard matching policies for subscriptions. Specification |
event_retention | Specification |
Dataformats
wamp2spring supports JSON (wamp.2.json) and MessagePack (wamp.2.msgpack) required by the Basic Profile. In addition it supports CBOR (wamp.2.cbor) and SMILE (wamp.2.smile).
Fallback
Currently wamp2spring does not support a fallback solution when peers cannot establish WebSocket connections. autobahn-js implements a fallback with long polling. You find the description about the protocol in the specification (Section 14.5.3.3). So far I don't have a need for a fallback solution because WebSocket works fine especially when it's sent over TLS connections. But when there is a need I will try to add this fallback solution. Pull requests are always welcome.
Quickstart
See Wiki
Maven
See Wiki
Example applications
You find a collection of example applications in the wamp2spring-demo GitHub repository.
Changelog
See Wiki
More information
See Wiki
License
Code released under the Apache license.