borkdude / http-kit

http-kit is a minimalist, event-driven, high-performance Clojure HTTP server/client library with WebSocket and asynchronous support

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

http-kit
Documentation | Latest releases | Get support

http-kit

Simple, high-performance event-driven HTTP client+server for Clojure

http-kit is a minimalist and efficient Ring-compatible HTTP client+server for Clojure.

It uses an event-driven architecture to support highly concurrent a/synchronous web applications, and features a simple unified API for WebSocket and HTTP long-polling/streaming.

Latest release/s

  • 2023-06-30 2.7.0 (stable): changes
  • 2023-10-11 2.8.0-beta3 (dev): changes

Main tests Graal tests

See here for earlier releases.

Why http-kit?

  • Ring compliant: http-kit is a drop-in replacement for the standard Ring Jetty adapter. You can use it with all your current libraries and middleware.

  • High performance: http-kit uses an event-driven architecture like nginx, and is fast. See here for benchmarks.

  • High concurrency: http-kit is efficient. Its RAM usage is O(n), with only few kB used per connection. Tests have shown http-kit happily serving >600k concurrent connections.

  • Clean, simple, small: written from the ground-up to be lean, the entire http-kit client+server JAR is ~90kB with zero dependencies and ~3k total lines of code.

  • Sync or async: synchronous is simple, asynchronous fast & flexible. With http-kit you get the best of both with a simple API that lets you mix & match to best fit your use case.

  • WebSockets: realtime web apps are a breeze with http-kit, with great out-the-box support for both WebSockets and efficient HTTP long-polling.

Performance

http-kit now includes an extensive single-system benchmark suite that can be easily customized and run in your own environment.

See here for http-kit's benchmark philosophy, usage info, detailed results, etc.

Selected example results:

Important: as with all benchmarks - please be skeptical and check the details for important context!

chart-server-work-0

chart-client-https

Project status

http-kit was created by @shenfeng, but is currently being maintained by its community.

A big thank-you to the current contributors for keeping the project going! Additional contributors very welcome: please ping me if you'd be interested in lending a hand.

- Peter Taoussanis

Documentation

License

Copyright © 2012-2023 Feng Shen and contributors.
Licensed under Apache 2.0.

About

http-kit is a minimalist, event-driven, high-performance Clojure HTTP server/client library with WebSocket and asynchronous support

License:Apache License 2.0


Languages

Language:Java 62.4%Language:Clojure 34.3%Language:Shell 1.2%Language:C 1.2%Language:Go 0.5%Language:Lua 0.2%Language:Ruby 0.1%Language:JavaScript 0.1%