This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
clj-browserchannel/README.md
2016-05-16 18:56:52 -04:00

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
  • 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.

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.