Welcome! Please see the About page for a little more info on how this works.

0 votes
in ClojureScript by
Clojure Socket REPLs share an evaluation environment.

For example, start up with


java -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}" -cp cljs.jar clojure.main


Then in one terminal


$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
user=> (def x 3)
#'user/x


then if you go into another terminal


$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
user=> x
3


and in the original terminal where you started the socket REPL:


user=> x
3



Here is what I get with the Node Socket REPL (not sure if I'm starting it the right way):


java -Dclojure.server.repl="{:port 5555 :accept cljs.server.node/repl}" -cp cljs.jar clojure.main


First terminal:


$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
ClojureScript 1.10.160
cljs.user=> (def x 3)
#'cljs.user/x



Second terminal:


$ telnet 0 5555
Trying 0.0.0.0...
Connected to localhost.
Escape character is '^]'.
ClojureScript 1.10.160
cljs.user=> x
WARNING: Use of undeclared Var cljs.user/x at line 1 <cljs repl>
nil

2 Answers

0 votes
by

Comment made by: dnolen

To clarify, ClojureScript Socket REPLs must be made to work this way one by one. Only {{cljs.server.browser}} currently works this way. The others needs to be adjusted. The main thrust of this work is to make {{-setup}} & {{-teardown}} idempotent and thread safe. The other bit is to make sure that output gets directed correctly. Browser REPL currently exhibits this bug https://dev.clojure.org/jira/browse/CLJS-2643.

0 votes
by
Reference: https://clojure.atlassian.net/browse/CLJS-2655 (reported by mfikes)
...