Compojure 是一個基於 ring 的上層web開發框架。在 lein new compojure my-app 生成的項目中,默認是啟用 jetty 服務器的,最近用到了 http-kit 中的 websocket, 所以需要將服務器改為 http-kit 的。其實很簡單,只要將 run-jetty 替換為 run-server 即可。兩者的參數是一樣的:
(run-jetty app options) (run-server app options)
更改之后要注意兩點:
1.1 啟動
之前的啟動可以 lein ring server 直接啟動起來,而且默認支持熱代碼更新的。但是改成 http-kit 之后,需要 lein run。
; 之前是 lein ring server
; 改動后 lein run
1.2 代碼熱更新
上述配置之后,代碼是不會熱更新的。如果要支持代碼熱更新,需要使用 ring.middleware.reload 來手動配置一下:
(defn -main [& args] ;; 入口函數 (let [handler (reload/wrap-reload (site #'all-routes))] ;reload/wrap-reload 中間件就是熱更新的功能 (run-server handler {:port 8080}))) ; run-server 來使用 http-kit