I’ve got a couple projects that were built using hookbox to manage real-time message passing between web clients and servers. Hookbox was great — it totally abstracted the transport layer, exposing a simple publish/subscribe interface across different channels with an elegant security system.
Unfortunately the hookbox project has rapidly fallen into disarray due to the original maintainer’s unwillingness to even put in the effort to hand off ownership. (Grrr!) So it’s hard to consider it a viable platform any more.
What’s a good platform for providing real-time communication with web apps? Requirements:
- Works seemlessly cross browser, using HTML5 websockets or COMET as available. Transport choice should be invisible to application layer. I don’t care about ancient browsers (IE6)
- Client access from both javascript and server-side systems (i.e. in php / python / ruby) — this is critical
- Provides a publish / subscribe metaphor with arbitrary payloads
- Allows clients to see what other clients are connected to a channel, i.e. presence
- Fine-grained access control through callbacks to any web application (nice to have)
I’ve heard that socket.io can do some of this, but I get the sense that it’s at a lower layer of the stack. Can it connect to non-javascript libraries? Do auth?
Although I haven’t tried it yet, I started looking into Pusher for a Node Knockout 2011 entry. In addition to JavaScript, it supports the following non-js clients:
If messaging via a 3rd party is a possibility, you can try the service for free using their Sandbox plan (20 connections & upto 100K messages/day) and see if it meets your needs. (I’m a little uncertain about the “presence” requirement, though it may be covered in the docs.)