3.4 KiB
clj-browserchannel
Cross-browser compatible, real-time, bi-directional communication between ClojureScript and Clojure using Google Closure BrowserChannel.
goog.net.BrowserChannel
From the Google Closure API: "A BrowserChannel simulates a bidirectional socket over HTTP. It is the basis of the Gmail Chat IM connections to the server." The javascript api of BrowserChannel is open-source and part of the Google Closure library. The server component is not, as is noted in the Google Closure book ("Closure: The Definitive Guide by Michael Bolin").
Usage
clj-browserchannel is the main library containing both the server- and client-side functionality you'll use in your web apps.
In order to use the server implementation of BrowserChannel you'll need to use an async adapter. Currently the provided options are:
You can find more information on usage of all of these components by following any of the above links to them.
Demo
The chat-demo application is an example chat application using a
client-side and server-side implementation for BrowserChannel written in
Clojure/ClojureScript. The server component is for BrowserChannel version 8.
The client component serves as a wrapper over goog.net.BrowserChannel
.
The chat-demo web app runs in at least:
- Chrome
- Firefox
- Internet Explorer 5.5+ (!!)
- Android browser
Related and alternative frameworks
- Websockets - Websockets solve the same problems as BrowserChannel, however BrowserChannel works on almost all existing clients.
- socket.io - socket.io provides a similar api as BrowserChannel on top of many transport protocols, including websockets. BrowserChannel only has two transport protocols: XHR and forever frames (for IE) in streaming and non-streaming mode.
Other BrowserChannel implementations
Many thanks to these authors, their work is the only open-source documentation on the BrowserChannel protocol.
- libevent-browserchannel-server in C++ by Andy Hochhaus - Has the most extensive documentation on the BrowserChannel protocol
- browserchannel in Ruby by David Turnbull
- node-browserchannel in Node.js/Javascript by Joseph Gentle
About
Written by: Gijs Stuurman / @thegeez / Blog / GitHub
Many updates in this fork by: Gered King / @geredking / GitHub
License
Copyright (c) 2012 Gijs Stuurman and released under an MIT license.