clojure.browser.repl/connect
function | since v0.0-927 | Edit |
(connect repl-server-url)
Source docstring:
Connects to a REPL server from an HTML document. After the
connection is made, the REPL will evaluate forms in the context of
the document that called this function.
(defn connect
[repl-server-url]
(let [connected? (atom false)
repl-connection (net/xpc-connection {:peer_uri repl-server-url})]
(swap! xpc-connection (constantly repl-connection))
(net/register-service repl-connection
:start-handshake
(fn [_]
(when-not @connected?
(reset! connected? true)
(reset! parent-connected? true)
(net/transmit repl-connection :ack-handshake nil)
(flush-print-queue! repl-connection))))
(net/register-service repl-connection
:reconnect
(fn [_]
(reset! connected? false)
(reset! parent-connected? false)))
(net/register-service repl-connection
:evaluate-javascript
(fn [json]
(let [obj (json/parse json)
repl (gobj/get obj "repl")
form (gobj/get obj "form")]
(net/transmit
repl-connection
:send-result
(json/serialize
#js {"repl" repl
"result"
(binding [*repl* repl]
(evaluate-javascript repl-connection form))})))))
(net/connect repl-connection
(constantly nil)
(fn [iframe]
(set! (.-display (.-style iframe))
"none")))
(bootstrap)
repl-connection))