You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.1 KiB
53 lines
1.1 KiB
(ns openretro.main
|
|
(:require [org.httpkit.server :as http-server]
|
|
[reitit.ring :as ring]
|
|
[ring.middleware.defaults :refer [wrap-defaults api-defaults]]
|
|
[hiccup.page :as h]))
|
|
|
|
(defn ws-endpoint [req]
|
|
(println "ws incoming")
|
|
(http-server/with-channel
|
|
req channel
|
|
(http-server/on-close
|
|
channel
|
|
(fn [status] (println "closed" status)))
|
|
(http-server/on-receive
|
|
channel
|
|
(fn [data]
|
|
(println "received" data)
|
|
(http-server/send! channel data)))))
|
|
|
|
(def router
|
|
(ring/ring-handler
|
|
(ring/router
|
|
[["/ws" {:get {:handler ws-endpoint}}]])
|
|
(ring/routes
|
|
(ring/create-resource-handler
|
|
{:path "/"}))))
|
|
|
|
(defonce server (atom nil))
|
|
|
|
(defn stop-server []
|
|
(when-not (nil? @server)
|
|
(@server :timeout 1000)
|
|
(reset! server nil)))
|
|
|
|
(defn start-server []
|
|
(reset!
|
|
server
|
|
(http-server/run-server
|
|
(fn [req]
|
|
;(clojure.pprint/pprint req)
|
|
(router req))
|
|
{:port 8080})))
|
|
|
|
(defn restart-server []
|
|
(stop-server)
|
|
(start-server))
|
|
|
|
(comment
|
|
(restart-server))
|
|
|
|
(defn -main [& _]
|
|
(start-server))
|