Sente
Realtime web comms for Clojure/Script
Sente is a small client+server library that makes it easy to build realtime web applications with Clojure + ClojureScript.
Loosely inspired by Socket.IO, it uses core.async, WebSockets, and Ajax under the hood to provide a simple high-level API that enables reliable, high-performance, bidirectional communications.
Sen-te (先手) is a Japanese Go term used to describe a play with such an overwhelming follow-up that it demands an immediate response, leaving its player with the initiative.
Latest release
- 2023-07-04:
1.18.1
- release notes | Clojars
Resources
- Wiki - community docs (
👈 start here) - Release info - releases and changes
- API docs - auto-generated API docs
- GitHub issues - for support requests, contributions, etc.
Features
- Bidirectional a/sync comms over WebSockets with auto Ajax fallback
- It just works: auto keep-alives, buffering, protocol selection, reconnects
- Efficient design with transparent event batching for low-bandwidth use, even over Ajax
- Send arbitrary Clojure vals over edn or Transit (JSON, MessagePack, etc.)
- Tiny API (see the wiki for details)
- Automatic, sensible support for users connected with multiple clients and/or devices simultaneously
- Realtime info on which users are connected over which protocols
- Standard Ring security model: auth as you like, HTTPS when available, CSRF support, etc.
- Support for several popular web servers, easily extended to other servers.
Funding this work
Please see here if you'd like to help support my continued open-source work (thank you!!
License
Copyright © 2014-2023 Peter Taoussanis, licensed under EPL 1.0 (same as Clojure).