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

(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))