Sente is a small client+server library that makes it easy to build reliable, high-performance realtime web applications with Clojure + ClojureScript. Bidirectional a/sync comms over both WebSockets and Ajax (auto-fallback). It just works, auto keep-alives, buffering, protocol selection, reconnects. Efficient design incl. transparent event batching for low-bandwidth use, even over Ajax. Send arbitrary Clojure vals over edn or Transit (JSON, MessagePack, etc.). Make-channel-socket! and you're good to go. Automatic, sensible support for users connected with multiple clients and/or devices simultaneously. Realtime info on which users are connected over which protocols (v0.10.0+). Flexible model: use it anywhere you'd use WebSockets/Ajax/Socket.IO, etc. Standard Ring security model: auth as you like, HTTPS when available, CSRF support, etc. Fully documented, with examples. Small codebase: ~1.5k lines for the entire client+server implementation.
Features
- Efficient design
- Automatic, sensible support for users connected
- Realtime info on which users are connected
- Flexible model
- Standard Ring security model
- Small codebase