(set-env! :dependencies '[[http-kit "2.2.0"]])
(require '[org.httpkit.server :as ws]
'[clojure.pprint :refer [pprint]])
(defn echo-back-handler [ring-request]
(ws/with-channel ring-request channel
;; on-open
(if (ws/websocket? channel)
(let [msg "connected a client with WebSocket"]
(println msg)
(ws/send! channel msg))
(println "connected a client with HTTP"))
(ws/on-close channel
(fn [status]
(println "channel closed: " (name status))))
(ws/on-receive channel
(fn [data]
(println "received: " data)
(ws/send! channel data)))))
(def stop-server
(ws/run-server echo-back-handler
{:port 8080}))
;;; test
;;; npm install -g wscat
;;; wscat -c ws://localhost:8080
(stop-server)