clojure.browser.repl/connect

functionsince v0.0-927Edit
(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.
Source code @ clojurescript:src/main/cljs/clojure/browser/repl.cljs
(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 [_]
        ;; Child will keep retrying, but we only want
        ;; to ack once.
        (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))