
WAMP – The Web Application Messaging Protocol - xg15
http://wamp.ws/
======
theknarf
WAMP usually means the "Windows, Apache, MySQL, PHP" stack. So creating a new
"web technology" with the same abbreviation is a bit stupid. Your going to
have a bad time getting search working.

~~~
Rifu
Though I do agree with the general sentiment of your comment, I should point
out that the maintainers of this project do address this issue in their
FAQ[0].

[0] [http://wamp.ws/faq/#naming](http://wamp.ws/faq/#naming)

~~~
degenerate
Wow. You can't just... use the same acronym and assume everything is hunky
dory because you _pronounce_ it differently. It's still the same damn letters!
This project should have gone with "WebMP" or the full WAMPWS acronym.

By "stealing" an existing, long-running and popular acronym, the maintainers
are going to stifle this project no matter how much they try to separate
themselves from WAMP.

Trick question: is it possible to run WAMP on WAMP?

------
breakingcups
I've been forced to use this on a contracting-job and not exactly happy with
the state of the current components. It's a bit too brittle, there's usually
little to no documentation on the different authmethods between different
components (MDWamp and AutobahnJS specifically). There's sloppy typo's and
every few hours the server decides not to accept connections for a certain
auth-id anymore until it is rebooted.

~~~
oberstet
Regarding docs, yes agreed. But we are working on this and things are
improving. This is still moving fast .

Rgd the server stability issues you mention: what WAMP router are you using?

------
RaitoBezarius
While WAMP is awesome on the paper. (And it is definitely awesome.)

Some disclaimer would be fair. Currently, the most complete router
implementation is Crossbar.io (Python), while it is functional, documentation
is lacking cruelly. For example, we don't know yet how to do proper cookie
authentication. Or the WAMP-CRA authentication has a little flaw and should be
replaced with a new auth scheme.

Another example is that AutobahnPython or AutobahnJS are lacking documentation
on CallOptions or SubscribeOptions and other things. There is a lot of
boilerplate to achieve simple things like... managing a connection lifetime
(there is onopen, onclose, and onclose gives you some details, but no
consistent, it's hard to know when auth failed or connection aborted).

Anyway. It just means that WAMP is in his debuts, I hate some weaknesses of
the WAMP ecosystem (documentation, boilerplate, etc...) Nevertheless, it's
awesome and you should definitely try something with. And if you can,
contribute and make it incredible.

(No offense, I'm a fond of WAMP, but I don't want people to say things that
are obvious like: "oh there is no doc it's a shitty project" \-- WAMP is
moving fast. Very fast.)

------
fenesiistvan
Can somebody elaborate why the need for such libraries, when:

-client side websocket handling is ~3 lines of code

-server side websocket is ~200 lines of code even with pure bit level C/C++ on top of any TCP socket (the websocket RFC is very simple)

-writing a simple protocol for yourself is obvious

So, you can write all these for yourself within one day and then you know all
the details. It takes more time to study how to use others code and you will
still remain on the wrong path if some modification would be needed, feature
missing or you have to fix a bug.

~~~
neomantra
Reconsider your statement, replacing "WebSocket" with "TCP socket". Why do so
many networking and messaging libraries exist when you can communicate with
another socket endpoint in a few lines of code?

This specification describes two common network design patterns (RPC, PubSub)
and establishes a reusable heterogeneous framework for using them. If somebody
needs those patterns, they can just pick this up and use it, and also
interoperate with other clients/routers that use the same specification. Since
there is this implementation-agnostic specification, client APIs and routers
can be implemented within whatever language and context (embedded system,
server, web browser, whatever) and they will all work together.

The WebSocket is a transport. One can put many sorts of subprotocols over it
and this is one effort to make a common , useful one.

~~~
fenesiistvan
It takes a lot of time to implements fast/robust/scalable sockets. However
this is not true with websockets. With websocket you don't have to play with
various models, OS API's and threading. You just have to interpret/format the
received/sent bytes as described in the RFC. Of course, you can put any app
logic over websocket, but this has less to do with the websocket itself (then
we enter the word of "app servers" for which we have endless other solutions
if somebody favors a certain framework)

------
BillinghamJ
Might have misinterpreted this, but from reading all the slides - it seems
that even for RPC, you have to pass all messages via a central server.

For use internally between services, this seems like a really bad idea. Seems
like it'd be a big bottleneck when it came to scaling.

~~~
luhn
No, you're right. Multi-node support is on the roadmap, but no ETA yet. Until
that's implemented I can't seriously consider it for production.

I love the concept, though. One unified layered for all your services.

------
specialist
I'm unclear why the root node of WAMP messages is a JSON Array.

The rationalization for verbose, weird, ambiguous formats like XML and JSON is
that they're "self-describing".

Might as well just use MSGPACK or something.

~~~
oberstet
WAMP can use different serialization formats, and MsgPack is one of them.

------
johnbellone
I read this as "Winamp" and I had a flood of nostalgia.

The good ole' days.

~~~
nkg
I read this as "WAMP" and I had a flood of bad memories.

------
liviu
I'm using deepstream.io for a project and it works well so far. It has some
extra features like distribuited RPC calls, realtime search provider and
transforming outgoing data.

------
k__
So this is an alternative to hook.io?

~~~
thirdknife
and also socket.io?

~~~
oberstet
socket.io is a JS point solution for PubSub only ..
[http://wamp.ws/compared/#socketio](http://wamp.ws/compared/#socketio)

