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

akka-wamp

Scala, Java 8 and Akka

WAMP implementation written in Scala with Akka HTTP, usable from Java 8.

AngularWAMP

JavaScript

AngularWAMP is wrapper for AutobahnJS that provides deeper integration for AngularJS apps.

AutobahnCpp

C++ 11 and Boost/ASIO

C++ 11 implementation using Futures, Continuations and Lambdas. Runs on top of Boost and ASIO.

AutobahnJava

Java 8, Android or Netty

WAMP client library for Java and Android applications based on Java 8 CompletableFuture.

AutobahnJS

Javascript, HTML5 and NodeJS

WAMP client library for both browsers (HTML5) and NodeJS using Promises.

AutobahnPython

Python 2/3, Twisted and asyncio

WAMP client library + WebSocket client/server impl. for Python 2 and 3, on Twisted and asyncio.

awre

Erlang

awre is a WAMP V2 implementation in Erlang with client roles.

Backbone.wamp

JavaScript

Allows two-way synchronisation of Backbone models & collections between frontends and backends.

connectanum

Java, Netty

A Java WAMP implementation based on Netty. Both Client and Router roles.

connectanum-dart

Dart, Flutter

A WAMP client implementation for the dart language and flutter projects.

CppWAMP

C++ 11

CppWAMP is a WAMP V2 implementation in C++11.

haskell-wamp

Haskell

An experimental Haskell implementation of WAMP Basic Profile.

kraftfahrstrasse

TypeScript

Modern WAMP Client library for browsers and node utilizing native ES6+.

KWAMP

Kotlin

A Kotlin WAMP client (aims for basic profile).

jawampa

Java + RxJava, Netty

A Java WAMP implementation based on Netty and RxJava. Both Client and Router roles.

Loowy

Lua, lib-ev

Lua WAMP client implementation on top of lua-websockets and lib-ev.

MDWamp

Objective-C

Client library for iOS apps built on SocketRocket for WebSocket.

Minion

PHP

Client library and command line tool with Laravel support. Based on Thruway.

Nexus

Go

A full-feature WAMP client written in Go (also a Router).

p5-Net-WAMP

Perl 5

A WAMP implementation in Perl. See the docs for details.

ruby_wamp_client

Ruby

A WAMP client for Ruby

rx-wamp

JavaScript

A RxJS wrapper library for WAMP. Built on AutobahnJS, running in the browser and NodeJS.

Thruway

PHP

Thruway is a WAMP library built in PHP that provides both Client and Router roles.

Octamp

PHP

A Wamp client written in PHP using extension Swoole / Open Swoole

Turnpike

Go

A Go implementation of WAMP V2

Spell

Elixir/Erlang

Spell is a WAMP library built using Elixir, running on the Erlang VM.

Swamp

Swift

WAMP client library in pure Swift using Starscream and SwiftyJSON.

wampcc

C++

A C++ WAMP library that aims to depend only on C libraries. Includes a basic router.

WAMP_POCO

C++

A fork of AutobahnCpp that is using POCO instead of Boost.

wamped

C++

Intended for running on ARM mbed OS. Experimental.

WAMPexClient

Elixir

Elixir client library that implements the complete client Basic Profile and much of the Advanced Profile.

WampSyncClient

PHP

Synchronous (blocking) PHP client implementing Caller and Publisher roles

wamprx.js

TypeScript

Simple WAMP TypeScript client-side implementation (of course also usable in JavaScript). It heavily relies on RxJS.

WampSharp

C#

C# implementation of WAMP: both client and router roles, both JSON and MessagePack support.

wampy

Python

Python implementation for classic blocking Python applications.

wampy.js

JavaScript

Feature-rich lightweight WAMP Javascript implementation for browsers and node.js.

wamp_async

Rust

Rust client library. It features ergonomic async API

Routers

The following table lists WAMP compliant router implementations.

Name

Language/Run-time

Description

akka-wamp

Scala, Java 8 and Akka

A Scala implementation of a basic WAMP router.

Bonefish

C++, Boost/ASIO

WAMP router based on C++11 and Boost.Asio. Also usable as a library, Apache 2.0 licensed.

connectanum

Java, Netty

A Java WAMP implementation based on Netty. Both Client and Router roles.

Crossbar

Python (PyPy), Twisted

Crossbar.io WAMP router and microservice middleware. By the creators of WAMP and Autobahn.

CrossbarFX

Python (PyPy), Twisted

CrossbarFX enterprise WAMP router with central management, edge device platform and clustering.

Cargotube

Erlang

A software router in Erlang implementing the wamp.ws protcol (successor of Erwa).

Bondy

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.

Erwa

Erlang

Erwa is a WAMP V2 implementation: Erwa will be archived soon, please consider using CargoTube.

fox-wamp

JavaScript, NodeJS

Customizable WAMP Router.

jawampa

Java + RxJava, Netty

A Java WAMP implementation based on Netty and RxJava. Both Client and Router roles.

KWAMP

Kotlin

A Kotlin WAMP router (aims for basic profile).

Nexus

Go

Router implementation for Go. (also includes a client implementation)

NighlifeRabbit

JavaScript, NodeJS

Router implementation for NodeJS, MIT licensed.

Thruway

PHP

Thruway is a WAMP library built in PHP that provides both Client and Router roles.

Turnpike

Go

turnpike is a WAMP v2 router implemented in Go.

wamp2spring

Java, Spring

A Java implementation built on top of the Spring 5 WebSocket support.

wampcc

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.

wamprt

JavaScript, NodeJS

Router only implementation for NodeJS created by Orange.

WampSharp

C#

C# router implementation of WAMP v2, both JSON and MessagePack support.

Wiola

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

wamp-cli

JavaScript, NodeJS

CLI tool to help building applications with WAMP

wampy.js

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.

wick

Go

CLI tool to make WAMP RPCs and PubSub. Useful for developing WAMP Components and their testing.