http-kit

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

Github stars Tracking Chart

HTTP Kit

A high-performance event-driven HTTP client+server for Clojure

CHANGELOG, Current semantic version/s:

[http-kit "2.3.0"]         ; Stable, published by contributors, see CHANGELOG for details
[http-kit "2.4.0-alpha6"]  ; Dev,    published by contributors, see CHANGELOG for details
[http-kit "2.1.19"]        ; Legacy, published by @shenfeng

See the project website for documentation, examples, benchmarks, etc.

Project status

http-kit's author (@shenfeng) unfortunately hasn't had much time to maintain http-kit recently. To help out I'll be doing basic issue triage, accepting minor/obvious PRs, etc.

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

- @ptaoussanis

Hack locally

Hacker friendly: zero dependencies, written from the ground-up with only ~3.5k lines of code (including java), clean and tidy.

# Modify as you want, unit tests back you up:
lein test

# May be useful (more info), see `server_test.clj`:
./scripts/start_test_server

# Some numbers on how fast can http-kit's client can run:
lein test :benchmark

Enabling http-kit client SNI support

Requires JVM >= 8, http-kit >= 2.4.0-alpha6.
Common cause of: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

To retain backwards-compatibility with JVMs < 8, the http-kit client currently does not have SNI support enabled by default.

This default may be changed in a future breaking release. But in the meantime, manually enabling SNI support is easy:

  (:require [org.httpkit.sni-client :as sni-client]) ; Needs Java >= 8

  ;; Change default client for your whole application:
  (alter-var-root #'org.httpkit.client/*default-client* (fn [_] sni-client/default-client))

  ;; or temporarily change default client for a particular thread context:
  (binding [org.httpkit.client/*default-client* sni-client/default-client]
    <...>)

See org.httpkit.client/*default-client* docstring for more details.

Contact & Contribution

Please use the GitHub issues page for feature suggestions, bug reports, or general discussions. Current contributors are listed here. The project website is also on GitHub.

License

Copyright © 2012-2018 @shenfeng. Distributed under the Apache License Version 2.0.

Overview

Name With Ownerhttp-kit/http-kit
Primary LanguageJava
Program languageRuby (Language Count: 8)
Platform
License:Apache License 2.0
Release Count61
Last Release Namev2.8.0 (Posted on )
First Release Name2.0-rc1 (Posted on )
Created At2012-03-13 00:51:18
Pushed At2024-04-30 11:21:34
Last Commit At2024-04-30 13:10:29
Stargazers Count2.4k
Watchers Count110
Fork Count336
Commits Count695
Has Issues Enabled
Issues Count371
Issue Open Count40
Pull Requests Count70
Pull Requests Open Count4
Pull Requests Close Count121
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top