If you haven’t seen what the folks at Tavendo are up to lately and you are following the growth of the websockets protocol, I encourage you to check out their Crossbar.io project.

crossbar_logoI won’t go into the details of what Crossbar is or the open source Autobahn implementation of WAMP (no, no, not LAMP on Windows, this is different), but at a very high level, it’s the ability to utilize the websockets protocol to move data over the web. Autobahn leverages publish/subscribe or remote procedure call in Python, and many other flavors, over websockets, and allows developers to decouple their endpoints over a WAMP Router. Sounds messy, but it isn’t!

Crossbar.io allows full-stack JavaScript development, but is also much more versatile because of its polyglot nature: apps can extend from HTML5 browser front-ends and native mobile clients (such as Android and iOS) down to embedded devices (such as RaspberryPi and Arduino), served by back-ends composed across multiple servers and implemented in a mix of languages.

If you have ever worked with Windows Communication Foundation (WCF), I urge you to take a look at this. I got an implementation up and running on an Ubuntu server in a fraction of the time it took me to just figure out WCF’s convoluted and optional pieces of configuration.

As of this post, Crossbar is dependent on Twisted which still is in the process of being ported to Python 3, but if you have dropped Python 2 as you should have (It’s EOL folks, just please port everything! ;-)) don’t worry, Crossbar is just the Router!

Read More here at the Autobahn Google Group

Huh? I make the distinction above to exaggerate that the framework is decoupled. Think of Crossbar as a physical network router in a hypothetical web hosting data center, though we know it’s a logical piece of software, just stay with me. Physical routers don’t serve web pages (data/content), that’s the job of the servers, they just move data over a network. That’s exactly how you should think of Crossbar and why you should be excited about it. It’s a proxy of sorts to move data from one endpoint to another. Should that endpoint be a web browser on one end and a web server on another (in a traditional sense), or even a web browser on one side and a native Android app, each getting real-time, full duplex communication from the other asynchronously!