Skip to content

taoensso/sente

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cf6a3ec · Dec 31, 2024
Oct 28, 2024
Oct 28, 2024
Jul 25, 2023
Oct 28, 2024
Dec 31, 2024
Oct 28, 2024
Oct 28, 2024
Aug 4, 2023
Dec 31, 2024
Aug 4, 2023
Aug 4, 2023
Dec 31, 2024
Oct 28, 2024
Jul 9, 2023
May 30, 2023
Dec 31, 2024

Repository files navigation

Taoensso open source
API | Wiki | Latest releases | Slack channel

Sente

Realtime web comms library 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/s

Main tests Graal tests

See here for earlier releases.

Why Sente?

  • Bidirectional a/sync comms over WebSockets with auto Ajax fallback
  • It just works: auto keep-alive, buffering, protocol selection, reconnects
  • Efficient design with auto event batching for low-bandwidth use, even over Ajax
  • Send arbitrary Clojure vals over edn or Transit (JSON, MessagePack, etc.)
  • Tiny, easy-to-use API
  • Support for users simultaneously connected with multiple clients and/or devices
  • Realtime info on which users are connected, and 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.

Capabilities

Protocol client>server client>server + ack/reply server>user push
WebSockets ✓ (native) ✓ (emulated) ✓ (native)
Ajax ✓ (emulated) ✓ (native) ✓ (emulated)

So you can ignore the underlying protocol and deal directly with Sente's unified API that exposes the best of both WebSockets (bidirectionality + performance) and Ajax (optional ack/reply).

Documentation

Funding

You can help support continued work on this project, thank you!! 🙏

License

Copyright © 2012-2024 Peter Taoussanis.
Licensed under EPL 1.0 (same as Clojure).