/sente

Realtime web comms for Clojure/Script applications

Primary LanguageClojureEclipse Public License 1.0EPL-1.0

Taoensso open-source

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

Resources

  1. Wiki - community docs (👈 start here)
  2. Release info - releases and changes
  3. API docs - auto-generated API docs
  4. 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!! 🙏) - Peter

License

Copyright © 2014-2023 Peter Taoussanis, licensed under EPL 1.0 (same as Clojure).