Skip to content

ruroru/ring-http-exchange

Repository files navigation

ring-http-exchange

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.

Clojars Project

Installation

Add ring-http-exchange to dependency list

[org.clojars.jj/ring-http-exchange "1.4.1"]

Usage

(: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)})

Supported response body types

Response Body Type
java.lang.String
java.io.InputStream
java.io.File
byte[]
ring.core.protocols/StreamableResponseBody

Server configuration

Property Description Default value
host Host name 0.0.0.0
port Application port 8080
executor Executor to be used newThreadPerTaskExecutor
ssl-context Ssl context to be used in https configurator nil
record-support? Can use records as a response true
async? Add async ring support false
lazy-request-map? Create request map that is evaluated lazily false

Performance Tips

Executor

To increase performance you can pick executor depending on the use case

Use case Executor
Throughput Executors/newVirtualThreadPerTaskExecutor
Latency NioEventLoopGroup

Robaho httpserver

Robaho httpserver can be added to the dependency list, which is a drop-in replacement for a com.sun.net.httpserver

[io.github.robaho/httpserver "1.0.29"]

License

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

About

Ring adapter for com.sun.net.httpserver.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors