Web Application Messaging Protocol
Seems to be an emerging substandard ... or rather a superstandard, with a growing selection of Python servers.
See Messaging#WAMP
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/ [ old link ]
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.
https://crossbario.com/blog/Is-Crossbar-the-future-of-Web-apps/
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).
http://tavendo.com/ [ now redirects to Crossbar.io site ]
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.
Autobahn Server for Python ?
Is it client lib required by JSNode server ? Can it run as a Twisted server ?
https://github.com/crossbario/autobahn-python ?
from autobahn.twisted.wamp import ApplicationSession # or: from autobahn.asyncio.wamp import ApplicationSession
Client version for JSNode WAMP server ? https://github.com/tavendo/AutobahnPython [ redirects to 'github/crossbario/autobahn-python' ]
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.
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 [ now redirects to subdirectory of crossbar.io ... the obscurity lifts, a re-org ! ]
Autobahn JS runs on both Web browsers and NodeJS.
Some fairly serious package dependencies, but reasonably light weight nonetheless.
Code for autobahn.twisted.wamp -> https://autobahn.readthedocs.io/en/latest/_modules/autobahn/twisted/wamp.html
For a fairly small incremental investment in Python code inventory, you can get a Twisted WAMP server. Worth a look.
https://autobahn.readthedocs.io/en/latest/
https://pypi.org/project/autobahn/
... Open-source (MIT license) ?
Nightlife Rabbit
https://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
