Clojure ring adapter for
com.sun.net.httpserver.HttpServer
which is included in the JDK.
The main motivation for this is to support starting a small HTTP server inside an application which itself isn't necessary primarily a web app, while avoiding adding any new major dependencies on the classpath.
Add ring-http-exchange to dependency list
[org.clojars.jj/ring-http-exchange "1.2.5"]
For better performance, robaho httpserver can be added to the dependency list. It is a drop-in replacement for a com.sun.net.httpserver
[io.github.robaho/httpserver "1.0.27"]
(:require [ring-http-exchange.core :as server])
(server/run-http-server
(fn [_]
{:status 200
:headers {"Content-Type" "text/html; charset=utf-8"}
:body "hello world"})
{:port 8080
:ssl-context (ssl/keystore->ssl-context
(io/resource "keystore.jks") "keystore-password"
(io/resource "truststore.jks") "truststore-password")
:executor (Executors/newVirtualThreadPerTaskExecutor)})
Response Body Type |
---|
java.lang.String |
java.io.InputStream |
java.io.File |
byte[] |
ring.core.protocols/StreamableResponseBody |
Property | Description | Default value |
---|---|---|
host | Host name | 0.0.0.0 |
port | Application port | 8080 |
executor | Executor to be used | VirtualThreadExecutor |
ssl-context | Ssl context to be used in https configurator | nil |
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.
Can you improve this documentation? These fine people already did:
Jj, ruroru, jj & Håkan RåbergEdit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
Ctrl+k | Jump to recent docs |
← | Move to previous article |
→ | Move to next article |
Ctrl+/ | Jump to the search field |