Web Application Messaging Protocol
Seems to be an emerging substandard ... or rather a superstandard.
The WAMP spec is well-written and geared to a middling tech audience, but probably includes more than you will ever need for home integration projects. Still, it's better to know what's out there than not ...
WAMP is an open standard WebSocket subprotocol that provides two application messaging patterns in one unified protocol:
Remote Procedure Calls + Publish & Subscribe.
http://wamp.ws/implementations/
http://en.wikipedia.org/wiki/Web_Application_Messaging_Protocol
The Web Application Messaging Protocol -
https://github.com/tavendo/WAMP/tree/master/spec
https://github.com/wamp-proto/wamp-proto - new link ?
This document specifies the Web Application Messaging Protocol (WAMP) split into two parts:
The Web Application Messaging Protocol, Part 1: Basic Profile
The Web Application Messaging Protocol, Part 2: Advanced Profile
Decent definitions, a triumph of clarity over celerity ... whatever that means.
Crossbar.io
Implemented in Python.
Crossbar.io makes connecting your IoT devices, backends and frontends easy.
200k+ connections on commodity hardware,
Push and pull information
Low-latency communication
Polyglot applications
Seamlessly integrate backends & browsers
Libraries for 8 languages (including C++ & Python)
Runs on Raspberry Pi, Arduino Yun & others
Crossbar.io is an open source solution for all your application messaging requirements.
https://github.com/crossbario/crossbar
Crossbar.io is an open-source WAMP application router that allows to build advanced applications from loosely-coupled components that can talk in real-time with each other.
install_requires=[ 'setuptools>=2.2', # Python Software Foundation license 'zope.interface>=3.6.0', # Zope Public license 'twisted>=twisted-13.2', # MIT license 'autobahn[twisted]>=0.10.3', # MIT license 'netaddr>=0.7.11', # BSD license 'pytrie>=0.2', # BSD license 'jinja2>=2.7.2', # BSD license 'mistune>=0.3.0', # BSD license 'pygments>=1.6', # BSD license 'pyyaml>=3.11', # MIT license 'shutilwhich>=1.0.1', # PSF license 'treq>=15.0.0', # MIT license
http://tavendo.com/blog/post/is-crossbar-the-future-of-python-web-apps/
Crossbar.io allows several parts of an application to communicate through it, using the WAMP protocol. Of course, a WAMP client can talk to the server and vice-versa, just like a HTTP client can talk to Apache/Nginx?.
But more than that, WAMP clients can talk transparently and easily to each other, the way an AMQP client can talk to others through a RabbitMQ server.
Crossbar.io requires Autobahn ...
http://crossbar.io/docs/Installation-on-the-RaspberryPi/
This recipe will guide you through installing Crossbar.io on the Pi. After this, you will be able to
run the Crossbar.io WAMP router on the Pi,
run WAMP application components on the Pi written in Python using AutobahnPython?, which connect to a WAMP router - either on the Pi or on a different machine.
Autobahn
Open-source real-time framework for Web, Mobile & Internet of Things ...
The Autobahn project provides open-source implementations of the The WebSocket Protocol and The Web Application Messaging Protocol (WAMP) network protocols.
WebSocket allows bidirectional real-time messaging on the Web and WAMP adds asynchronous Remote Procedure Calls and Publish & Subscribe on top of WebSocket.
WAMP is ideal for distributed, multi-client and server applications, such as multi-user database-driven business applications, sensor networks (IoT), instant messaging or MMOGs (massively multi-player online games).
Real-time Web technology and next-gen application infrastructure.
WAMP is a network protocol which unifies Remote Procedure Calls and Publish & Subscribe in an open standard, WebSocket based protocol.
The Autobahn project maintains open-source implementations of WAMP (and WebSocket) for multiple programming languages.
Crossbar.io is an open-source WAMP router that allows to create applications from loosely coupled components that talk in real-time with each other.
Client lib required by server, do they only work with each other ?
https://github.com/tavendo/AutobahnPython
Autobahn Python is a subproject of Autobahn and provides open-source implementations of
The WebSocket Protocol
The Web Application Messaging Protocol (WAMP)
in Python running on Twisted and asyncio.
Same features as below but says "Open-source (MIT license)"
uses PythonTwisted for some examples ...
Autobahn Python features
framework for WebSocket / WAMP clients
compatible with Python 2.6, 2.7, 3.3 and 3.4
runs on CPython, PyPy and Jython
runs under Twisted and asyncio
implements WebSocket RFC6455 (and older versions like Hybi-10+ and Hixie-76)
implements WebSocket compression
implements WAMP, the Web Application Messaging Protocol
supports TLS (secure WebSocket) and proxies
Open-source (Apache 2 license)
Javascript too - https://github.com/tavendo/AutobahnJS
Autobahn JS runs on both Web browsers and NodeJS.
Nightlife Rabbit
ttps://github.com/christian-raedel/nightlife-rabbit
A WAMP-Router implementation for node.js. At the moment, WAMP basic profile in the roles of dealer and broker are supported. For client connections: publish/subscribe and remote procedure register/call, AutobahnJS can be used.
wamp.rt
https://github.com/Orange-OpenSource/wamp.rt
wamp.rt is a WebSocket Application Messaging Protocol WAMP V2 router implementation based on nodejs.
The router is compliant with the WAMP V2 Basic Profile.
wamp.rt implements both Dealer and Broker roles.
wamp.io
https://github.com/nicokaiser/wamp.io
Client wthh several base dependencies, nodejs ?
Also See
STOMP is to some extent a competing protocol - http://stomp.github.io/stomp-specification-1.2.html