SkillAgentSearch skills...

Sente

Realtime web comms library for Clojure/Script

Install / Use

/learn @taoensso/Sente
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<a href="https://www.taoensso.com/clojure" title="More stuff by @ptaoussanis at www.taoensso.com"><img src="https://www.taoensso.com/open-source.png" alt="Taoensso open source" width="340"/></a>
API | Wiki | Slack | Latest release: v1.21.0 (2025-11-04)

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.

<img width="600" src="../../raw/master/hero.jpg"/>

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.

Clj tests Cljs 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 with high-speed binary serialization (v1.21+)
  • 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 diverse web servers to others
  • Support for diverse transmission formats, easily extended to others

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 and others, thank you!! 🙏

License

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

<!-- Common --> <!-- Project -->
View on GitHub
GitHub Stars1.8k
CategoryDevelopment
Updated16h ago
Forks194

Languages

Clojure

Security Score

85/100

Audited on Mar 28, 2026

No findings