
Interacting with ZeroMQ from the browser - avalanche123
http://avalanche123.com/blog/2012/02/25/interacting-with-zeromq-from-the-browser/
======
dochtman
I like delivering ZeroMQ content to the browser (I have even written my own
little WebSockets server to deliver ZeroMQ-pubsub meessages to my webapp), but
I'm not sure I understand what the use for STOMP or NullMQ is, here. Is STOMP
just used for to translate some bits to ZeroMQ frame terms and NullMQ used as
the WebSockets-to-ZeroMQ broker? Why is this better than
<https://github.com/tailhook/zerogw>?

~~~
avalanche123
NullMQ multiplexing protocol is built on top of STOMP. The main advantage of
NullMQ is same socket primitives as ZeroMQ, so same patterns and solutions can
be built in the browser.

~~~
msutherl
I'm new to ZeroMQ. Would you be willing to provide a quick example scenario
where this might be useful?

~~~
avalanche123
I feel the example I built for our demo is a good one. Here I implemented
presence and chat servers to build online chatroom. Servers and clients were
initially built in Ruby, to be used in a private network behind firewall. I
was then able to re-use client code with minimal changes and port it into
JavaScript. This client code gave presence and chat to the browser. So
effectively we solved an interesting networking problem once and were able to
re-use the solution in two vastly different environments - private networks
and the browser, where different authentication, authorization, performance
and guarantees requirements apply.

------
rumcajz
"ZeroMQ’s actual C library (libzmq) is just an implementation detail."

That's a spot on. It doesn't really matter whether you are using ZeroMQ,
NullMQ or raw HTTP.

It's like OO-programming: You can write OO program in any language.

Same way, you can do distributed messaging on top of any transport layer.

~~~
malkia
Not that it matters much, but ZeroMQ is written in C++, while exposing "C"
only interface, and then additionally there is a C++ binding to this "C"
interface, which IMHO is very robust design (C for API is much easier to
access from other langs).

~~~
avalanche123
You are right, however C bindings in other languages usually look quite ugly
and non-idiomatic, but ZeroMQ did great job in that sense and their higher
level language bindings are written with language specifics in mind

------
hinathan
Jeff and Bulat - this is fascinating and timely. Just this week I've been
experimenting with bridging (Apollo) STOMP with
<https://github.com/wandenberg/nginx-push-stream-module> and getting what
appears to be similar results. Neat stuff, and I'm half tempted to write an
nginx-STOMP bridge to save a few layers of indirection.

~~~
rumcajz
Also there seems to be a braidge that connects nginx to 0mq at the backend
side: <https://github.com/FRiCKLE/ngx_zeromq>

------
alberth
Mongrel2.org anyone?

~~~
Alexandervn
Mongrel2 is a webserver and does ZeroMQ serverside. This is about ZeroMQ in
the browser.

------
dripton
Neat. I've wanted ZeroMQ in my browser.

I checked the README file for a license, but instead it says "ZeroMQ in your
brower, yo!" Which tells me that:

1\. I can't use it.

2\. The author is 12.

3\. It probably doesn't work.

~~~
avalanche123
Hi, the author is not twelve and he in fact is quite known in Python
community. I'll ping him about missing license.

~~~
dochtman
To wit, useful READMEs are useful. Make use of that fact, please.

~~~
avalanche123
Yup, I'm sure that will get updated

