Implementations¶
Get started with WAMP by choosing client libraries and a router:
To write application components in your favorite language, you will need a WAMP client library
To actually run your application consisting of components, you will need a WAMP router
In theory, you should be able to use any combination and mix of WAMP client libraries with routers and select the best or most fitting for each. That’s one promise of WAMP, one freedom of choice.
Note
You can choose your WAMP router independently of the programming language you want to write your components in since routers do not run application code directly.
Want your WAMP implementation listed here? Please open issue on github and introduce your project or even create a pull request with addition to this file.
Libraries¶
The following table lists WAMP compliant client library implementations.
Name |
Language/Run-time |
Description |
---|---|---|
Scala, Java 8 and Akka |
WAMP implementation written in Scala with Akka HTTP, usable from Java 8. |
|
JavaScript |
AngularWAMP is wrapper for AutobahnJS that provides deeper integration for AngularJS apps. |
|
C++ 11 and Boost/ASIO |
C++ 11 implementation using Futures, Continuations and Lambdas. Runs on top of Boost and ASIO. |
|
Java 8, Android or Netty |
WAMP client library for Java and Android applications based on Java 8 |
|
Javascript, HTML5 and NodeJS |
WAMP client library for both browsers (HTML5) and NodeJS using Promises. |
|
Python 2/3, Twisted and asyncio |
WAMP client library + WebSocket client/server impl. for Python 2 and 3, on Twisted and asyncio. |
|
Erlang |
awre is a WAMP V2 implementation in Erlang with client roles. |
|
JavaScript |
Allows two-way synchronisation of Backbone models & collections between frontends and backends. |
|
Java, Netty |
A Java WAMP implementation based on Netty. Both Client and Router roles. |
|
Dart, Flutter |
A WAMP client implementation for the dart language and flutter projects. |
|
C++ 11 |
CppWAMP is a WAMP V2 implementation in C++11. |
|
Haskell |
An experimental Haskell implementation of WAMP Basic Profile. |
|
TypeScript |
Modern WAMP Client library for browsers and node utilizing native ES6+. |
|
Kotlin |
A Kotlin WAMP client (aims for basic profile). |
|
Java + RxJava, Netty |
A Java WAMP implementation based on Netty and RxJava. Both Client and Router roles. |
|
Lua, lib-ev |
Lua WAMP client implementation on top of lua-websockets and lib-ev. |
|
Objective-C |
Client library for iOS apps built on SocketRocket for WebSocket. |
|
PHP |
Client library and command line tool with Laravel support. Based on Thruway. |
|
Go |
A full-feature WAMP client written in Go (also a Router). |
|
Perl 5 |
A WAMP implementation in Perl. See the docs for details. |
|
Ruby |
A WAMP client for Ruby |
|
JavaScript |
A RxJS wrapper library for WAMP. Built on AutobahnJS, running in the browser and NodeJS. |
|
PHP |
Thruway is a WAMP library built in PHP that provides both Client and Router roles. |
|
PHP |
A Wamp client written in PHP using extension Swoole / Open Swoole |
|
Go |
A Go implementation of WAMP V2 |
|
Elixir/Erlang |
Spell is a WAMP library built using Elixir, running on the Erlang VM. |
|
Swift |
WAMP client library in pure Swift using Starscream and SwiftyJSON. |
|
C++ |
A C++ WAMP library that aims to depend only on C libraries. Includes a basic router. |
|
C++ |
A fork of AutobahnCpp that is using POCO instead of Boost. |
|
C++ |
Intended for running on ARM mbed OS. Experimental. |
|
Elixir |
Elixir client library that implements the complete client Basic Profile and much of the Advanced Profile. |
|
LabVIEW / G |
A WAMP client written in National Instrument’s LabVIEW, also available as a VIPM package. |
|
PHP |
Synchronous (blocking) PHP client implementing Caller and Publisher roles |
|
TypeScript |
Simple WAMP TypeScript client-side implementation (of course also usable in JavaScript). It heavily relies on RxJS. |
|
C# |
C# implementation of WAMP: both client and router roles, both JSON and MessagePack support. |
|
Python |
Python implementation for classic blocking Python applications. |
|
JavaScript |
Feature-rich lightweight WAMP Javascript implementation for browsers and node.js. |
|
Rust |
Rust client library. It features ergonomic async API |
Routers¶
The following table lists WAMP compliant router implementations.
Name |
Language/Run-time |
Description |
---|---|---|
Scala, Java 8 and Akka |
A Scala implementation of a basic WAMP router. |
|
C++, Boost/ASIO |
WAMP router based on C++11 and Boost.Asio. Also usable as a library, Apache 2.0 licensed. |
|
Java, Netty |
A Java WAMP implementation based on Netty. Both Client and Router roles. |
|
Python (PyPy), Twisted |
Crossbar.io WAMP router and microservice middleware. By the creators of WAMP and Autobahn. |
|
Python (PyPy), Twisted |
CrossbarFX enterprise WAMP router with central management, edge device platform and clustering. |
|
Erlang |
A software router in Erlang implementing the wamp.ws protcol (successor of Erwa). |
|
Erlang |
Leapsight Bondy is an open source distributed API Gateway, WAMP Router and networking platform for microservices and IoT applications written in Erlang. It provides scaleable clustering capabilities via TCP/IP using Partisan, Plumtree Epidemic Broadcast Trees and an eventually consistent data store. |
|
Erlang |
Erwa is a WAMP V2 implementation: Erwa will be archived soon, please consider using CargoTube. |
|
JavaScript, NodeJS |
Customizable WAMP Router. |
|
Java + RxJava, Netty |
A Java WAMP implementation based on Netty and RxJava. Both Client and Router roles. |
|
Kotlin |
A Kotlin WAMP router (aims for basic profile). |
|
Go |
Router implementation for Go. (also includes a client implementation) |
|
JavaScript, NodeJS |
Router implementation for NodeJS, MIT licensed. |
|
PHP, OpenSwoole |
Octamp WAMP is Router implementation of WAMP Protocol using PHP and OpenSwoole that is scalable, it uses Redis Pub/Sub to connect with other server. |
|
PHP |
Thruway is a WAMP library built in PHP that provides both Client and Router roles. |
|
Go |
turnpike is a WAMP v2 router implemented in Go. |
|
Java, Spring |
A Java implementation built on top of the Spring 5 WebSocket support. |
|
C++ |
A C++ WAMP library that aims to depend only on C libraries, making it easier to work and build on a range of platforms. |
|
JavaScript, NodeJS |
||
C# |
C# router implementation of WAMP v2, both JSON and MessagePack support. |
|
Lua |
Router implementation in Lua, using the power of Lua/Nginx, WebSocket and Redis as cache store. |
Utilities¶
The following table lists WAMP compliant utilities.
Name |
Language/Run-time |
Description |
---|---|---|
JavaScript, NodeJS |
CLI tool to help building applications with WAMP |
|
JavaScript, NodeJS |
CLI tool built on top of Wampy.js library and exposes almost the same API to Command line charged with rich shell auto completion, description and examples. You can use it for testing WAMP API during development, debugging, or just exploring the new APIs. |
|
Go |
CLI tool to make WAMP RPCs and PubSub. Useful for developing WAMP Components and their testing. |