The Web Application Messaging Protocol (WAMP) vs DDP


#1

The WAMP project (http://wamp.ws) seems to pursue the same goals than DDP, namely Remote Procedure Calls + Publish & Subscribe. It has a reasonably active community, and is doing some good efforts on specification and implementations.

I wonder if this project could be useful to the meteor ecosystem, either to improve DDP, or even to implement livedata on top of WAMP.

For comparison, here are the relevant links about DDP:

We might be interested in quite a few WAMP features: routers (eg to filter the data traffic — see DoS hardening/rate limiting on the meteor roadmap), more transport protocols supported (including raw sockets — great for the server micro-services communications), and maybe the build-in authentication. I also need to have a closer look at WAMP to verify if there is something about namespacing.

Any thought on WAMP vs DDP?


#2

As a side note, I would also be interested in a feature called “Promise Pipelining” that is brilliantly explained in the Capnproto documentation. Neither WAMP or DDP implement it, but it would make perfect sense for a web application.


#3

Respecting the RAM

Before I came across Meteor, ChiagoBoss web framework use Erlang is good for low memory footprint. I love to see if Meteor has a way to point the same page or content in the same memory pointer across multiple request.

http://chicagoboss.org/about.htm


#4

I don’t how WAMP support for DOS hardening.
Anyway, we’ve started a project called firewall to DOS hardening/rate limit for Meteor apps.

BTW: WAMP is also a websocket sub protocol. I don’t think people use it for production even though there are implementations.


#5

tl;dr
WAMP is awesome because it allows for RPC to any connected client.
DDP is awesome for the fact that is keeps subscribers informed about changes.

Having used WAMP for a personal project, I feel it is awesome.

DDP is great but WAMP shines when it comes to micro services and IoT.
This is because you make a RPC to the central router which in turn redirects the RPC to the client which registered that RPC. This makes it possible for WAMP to call procedures in ALL connected clients (browsers, servers, teapots).

On the other side: DDP handles data updates way better. with DDP data updates are taken care of. or as the DDP specs say:

The client subscribing to a set of documents, and the server keeping the client informed about the contents of those documents as they change over time.

I think it would be awesome if we could have the distributed nature of WAMP combined with the document update goodness of DDP


#6

Meteor should probably build a community website and committee around DDP


#7

I am very interested in this discussion. We’ve used Meteor and been very happy with the result so far. WAMP seems to have a broad set of client implementations (IoT, etc…), the scalability, and fault-tolerance to multiple nodes in a cluster or federated system http://crossbar.io/docs/Architecture/. I think abstracting out data protocol for Meteor to WAMP would open a whole set new opportunities for meteor apps.