Content deleted Content added
Repaired outdated links for Autobahn clients |
Citation bot (talk | contribs) Add: date, website. | Use this bot. Report bugs. | Suggested by Superegz | Category:Network protocols | #UCB_Category 252/343 |
||
Line 8:
===Structure===
WAMP requires<ref>[http://crossbar.io/docs/Router-Transports/ Crossbar.io router transport ]</ref> a reliable, ordered, [[full-duplex]] message channel as a [[transport layer]], and by default uses Websocket. However, implementations can use other transports matching these characteristics and communicate with WAMP over e.g. raw sockets,<ref>{{cite web|url=https://github.com/tavendo/WAMP/issues/63|title=WAMP can run over Raw transports instead of WebSocket. Each message is prefixed with a uint32 (big endian) that provides the (serialized) length of the following WAMP message.|website=[[GitHub]] }}</ref> [[Unix ___domain socket|Unix sockets]] or [[Push technology#Long polling|HTTP long poll]].
Message [[serialization]] assumes<ref>[https://github.com/tavendo/WAMP/blob/master/spec/basic.md#serializations WAMP serialization]</ref> integers, strings and ordered sequence types are available, and defaults to [[JSON]] as the most common format offering these. Implementations often provide [[MessagePack]] as a faster alternative to JSON, but at the cost of an additional dependency.<ref>{{cite web|url=https://ksdaemon.github.io/wampy.js/#description|title=Wampy default serializer is JSON, but it also supports msgpack as a serializer, but you need to include msgpack.js as dependency}}</ref>
Line 29:
* '''publish''': a client publishes information about this topic.
This can have subtle variations depending on the underlying transport.<ref>{{cite web|title=The Long-Poll Transport is able to transmit a WAMP session over plain old HTTP 1.0/1.1. This is realized by the Client issuing HTTP/POSTs requests, one for sending, and one for receiving|website=[[GitHub]] |url=https://github.com/tavendo/WAMP/blob/master/spec/advanced.md#long-poll-transport}}</ref> However, implementation details are hidden to the end-user who only programs with the two high-level primitives that are RPC and PubSub.
===Security===
Line 132:
===Routers===
While routers can technically be embedded directly into the application code and some client libraries also provide a router, this architecture is discouraged by the specification.<ref>{{cite web|title= Brokers and Dealers are responsible for generic call and event routing and do not run application code.|website=[[GitHub]] |url=https://github.com/tavendo/WAMP/blob/master/spec/basic.md#application-code}}</ref>
Since the router is a moving part, it is best used{{According to whom|date=November 2015}} as a swappable black box just like one would consider [[Apache HTTP Server|Apache]] or [[Nginx]] for [[Hypertext Transfer Protocol|HTTP]]:
Line 175:
|}
[[Tavendo]], the company from which originated the protocol, is also the author of [[Crossbar.io]], which promotes itself as the de facto router implementation.<ref>{{cite web|title=Crossbar.io is the name of the most full-featured router|date=26 December 2014 |url=http://www.slideshare.net/sametmax/intro-wamp}}</ref> As they are promoting micro-service-based architectures, Crossbar.io embeds a service manager for hosting and monitoring WAMP app components, a static file Web server, and a WSGI container. Being written with the [[Twisted (software)|Twisted]] library, it is one of the implementations that can be set up in production without a proxy, aiming to replace stacks such as Nginx associated with [[Process supervision|Supervisor]] and [[Gunicorn]].
==Use cases==
|