           (let [path     (tmp-path f)
                 spec     (-> f tmp-file slurp read-string)
                 client-ns (str "adzerk.boot-reload." (rutil/path->ns path))
-                out-file (io/file tmp path)]
-            (write-cljs! tmp client-ns url ws-host (get spec :on-jsload on-jsload) asset-host)
+                out-file (io/file tmp path)
+                client-opts (merge {:on-jsload on-jsload
+                                    :asset-host asset-host}
+                                   (:boot-reload spec))]
+            ;; ws-host is used by client, but is not client option because it mainly used by server
+            (write-cljs! tmp client-ns url ws-host client-opts)
             (add-init! client-ns spec out-file path)))
 
         ;; Special case: boot-cljs used without .cljs.edn

        ;; If file already exists, do nothing.
        (when (and (empty? (relevant-cljs-edn fileset ids))
                   (nil? (b/tmp-get (.getPath (rutil/ns->file "adzerk.boot-reload" "cljs")))))
          (write-cljs! tmp "adzerk.boot-reload" url ws-host on-jsload asset-host))

        (reset! prev-pre fileset)
        (let [fileset (-> fileset (add-resource tmp) commit!)

   w ws-host WSADDR  str  "The websocket host clients connect to. Defaults to current host. (optional)"
   s secure          bool "Flag to indicate whether the client should connect via wss. Defaults to false."
   ;; Other Configuration
   j on-jsload SYM     sym "The callback to call when JS files are reloaded. (client, optional)"
   _ asset-host HOST   str "The asset-host where to load files from. Defaults to host of opened page. (client, optional)"
   a asset-path PATH   str "Sets the output directory for temporary files used during compilation. (optional)"
   c cljs-asset-path PATH str "The actual asset path. This is added to the start of reloaded urls. (optional)"
   o open-file COMMAND str "The command to run when warning or exception is clicked on HUD. Passed to format. (optional)"
