diff --git a/README.md b/README.md index 9517565..0107562 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,12 @@ Cross-browser compatible, real-time, bi-directional communication between ClojureScript and Clojure using Google Closure BrowserChannel. -## goog.net.BrowserChannel +From the [Google Closure API][1]: -From the Google Closure API: "A [BrowserChannel][1] 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 +> 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"). @@ -17,11 +17,14 @@ 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][2] 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: +use one of the async adapters. Currently the provided options are: * [clj-browserchannel-jetty-adapter][3] * [clj-browserchannel-immutant-adapter][4] @@ -35,12 +38,13 @@ following any of the above links to them. ## Demo -The [chat-demo][2] application is an example chat application using a +The [chat-demo][5] 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 client component serves as a wrapper over `goog.net.BrowserChannel` +which also currently implements version 8 of the protocol. -[2]: https://github.com/gered/clj-browserchannel/tree/master/chat-demo +[5]: https://github.com/gered/clj-browserchannel/tree/master/chat-demo The chat-demo web app runs in at least: @@ -48,25 +52,27 @@ The chat-demo web app runs in at least: * 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. -* socket.io - [socket.io][3] provides a similar api as BrowserChannel on + Websockets ultimately replaces BrowserChannel. +* socket.io - [socket.io][6] 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. -[3]: http://socket.io +[6]: http://socket.io ## Other BrowserChannel implementations Many thanks to these authors, their work is the only open-source documentation on the BrowserChannel protocol. * [libevent-browserchannel-server][libevent] -in C++ by Andy Hochhaus - Has the most extensive [documentation][libevent-doc] on the BrowserChannel protocol -* [browserchannel][ruby] in Ruby by David Turnbull +in C++ by Andy Hochhaus - Has the most extensive documentation on the BrowserChannel protocol (dead project?). See the protocol documentation on [archive.org][libevent-doc]. +* [browserchannel][ruby] in Ruby by David Turnbull (dead project?) * [node-browserchannel][node] in Node.js/Javascript by Joseph Gentle