Your thoughts on WAMP, PubSub and Routed RPC

WAMP is currently a draft spec submitted to the W3C and IETF.

At it’s most basic, it implements PubSub and Routed RPC over WebSocket or any reliable, duplexed and order guaranteed transport.

I came across the protocol a few weeks ago, and was immediately intrigued. I feel like I’ve been building systems to emulate this protocol for the last 10 years. Initially with Python, gevent and zeromq. My next iteration was Elixir/Nerves, MQTT and WebSockets. And my current implementation is Elixir, GraphQL and NATS. All have been trying to achieve the same thing. Realtime RPC and PubSub. So to say I was excited to come across a semi-official protocol is an under statement. Also not sure how I hadn’t come across it before.

There are some great Router backends developed in Erlang, specifically Bondy and CargoTube.

But the client situation for Erlang and Elixir leaves much to be desired. So what better way to learn a new protocol then to write your own client software! I put together an Elixir version called WAMPex that implements the Basic Profile. You can check it out here. There’s also an accompanying example app that emulates a SmartHome and Analytics Backend, https://gitlab.com/entropealabs/wampex_example_app

If people are building similar systems, I’m wondering what you’ve chosen for your tech stack, and what your use-cases are. I’m pretty excited to build some awesome platforms with my new found favorite protocol :slight_smile:

6 Likes