Skip to content

Instantly share code, notes, and snippets.

@eerohele
Last active December 20, 2021 08:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eerohele/8611d1a98bd2d5e8ddda14d8394d720a to your computer and use it in GitHub Desktop.
Save eerohele/8611d1a98bd2d5e8ddda14d8394d720a to your computer and use it in GitHub Desktop.
Start Clojure Socket REPL server and write the port number into .repl-port

In your ~/.clojure/deps.edn, add an alias like this:

:socket-repl {:extra-deps {me.flowthing/shiv {:git/url "https://gist.github.com/eerohele/8611d1a98bd2d5e8ddda14d8394d720a"
                                              :sha "339ef83def69e62ac969a2fd797a9be1d3c1fe83"}}
              :exec-fn shiv/start-server
              :exec-args {:name "server"
                          :port 0
                          :accept clojure.core.server/repl
                          :server-daemon false}}

Then, on the command line, run:

$ clojure -X:socket-repl
Cloning: https://gist.github.com/eerohele/8611d1a98bd2d5e8ddda14d8394d720a
Checking out: https://gist.github.com/eerohele/8611d1a98bd2d5e8ddda14d8394d720a at 339ef83def69e62ac969a2fd797a9be1d3c1fe83
Socket REPL server listening on localhost:49889
{:paths ["."]}
(ns shiv
(:require
[clojure.core.server :as server]
[clojure.java.io :as io]))
(defn start-server
[opts]
(let [server (server/start-server opts)
port (.getLocalPort server)
host (-> server .getInetAddress .getCanonicalHostName)
port-file (io/file ".repl-port")]
(.deleteOnExit port-file)
(spit port-file port)
(printf "Socket server listening on %s:%s\n" host port)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment