chat-demo | ||
clj-browserchannel | ||
clj-browserchannel-immutant-adapter | ||
clj-browserchannel-jetty-adapter | ||
test | ||
.gitignore | ||
README.md |
clj-browserchannel
Cross-browser compatible, real-time, bi-directional communication between ClojureScript and Clojure using Google Closure 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
This project is comprised of multiple libraries. You'll need to include two of them in your projects.
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 one of the async adapters. 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
which also currently implements version 8 of the protocol.
The chat-demo web app runs in at least:
- Chrome
- Firefox
- Internet Explorer 5.5+ (!!)
- Android browser
- Others
Related and alternative frameworks
- Websockets - Websockets solve the same problems as BrowserChannel, however BrowserChannel works on almost all existing clients. Websockets ultimately replaces BrowserChannel.
- 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 (dead project?). See the protocol documentation on archive.org.
- browserchannel in Ruby by David Turnbull (dead project?)
- 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.