A small Clojure library to find an available TCP port.
Useful for tests, development servers, or any situation where a free port is needed dynamically.
The latest version is available on Clojars:
For deps.edn:
{:deps {prestancedesign/get-port {:mvn/version "0.2.0"}}}For project.clj:
[prestancedesign/get-port "0.2.0"]get-port— Find an available TCP portmake-range— Create an inclusive port range
(ns hello-world.core
(:require [prestancedesign.get-port :refer [get-port make-range]]
[ring.adapter.jetty :as server]))
...
(server/run-jetty handler {:port (get-port)}) ; Get a random available portTry a preferred port:
(get-port {:port 3000})Pass in a vector of preferred ports:
(get-port {:port [3000 3004 3010]})Use the make-range helper to search within an inclusive port range:
(get-port {:port (make-range 3000 3005)})Use :fallback true to return a random available port when none of the preferred ports are available.
Otherwise nil is returned.
(get-port {:port 3000 :fallback true})
(get-port {:port [3000 3004 3010] :fallback true})Copyright © 2020-2024 Michaël SALIHI
Distributed under the Eclipse Public License, the same as Clojure.