Last active
February 23, 2016 10:44
-
-
Save mping/98bb8eb9faf3c51f9889 to your computer and use it in GitHub Desktop.
server.clj
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defproject jetty-async "0.1.0-SNAPSHOT" | |
:description "FIXME: write description" | |
:url "http://example.com/FIXME" | |
:license {:name "Eclipse Public License" | |
:url "http://www.eclipse.org/legal/epl-v10.html"} | |
:dependencies [[org.clojure/clojure "1.7.0"] | |
[com.ninjudd/ring-async "0.2.0"]]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns jetty-async.core | |
(:require [clojure.core.async :refer [go >! chan close! timeout]] | |
[ring.adapter.jetty-async :refer [run-jetty-async]]) | |
(:gen-class)) | |
(def counter (atom 0)) | |
(defn now [] (new java.util.Date)) | |
(defn handler [request] | |
(let [body (chan) | |
start (now)] | |
(println "accpt" start) | |
(go | |
(<! (timeout 2000)) | |
(>! body (format "id: %d, uri: %s\n%s\n%s" (swap! counter inc) (:uri request) start (now))) | |
(close! body) | |
(println "end")) | |
(println "retrn") | |
{:body body})) | |
(defonce server (atom nil)) | |
(defn stop-server [] | |
(when-not (nil? @server) | |
;; graceful shutdown: wait 100ms for existing requests to be finished | |
;; :timeout is optional, when no timeout, stop immediately | |
(.stop server) | |
(reset! server nil))) | |
(defn start-server [] | |
(reset! server (run-jetty-async #'handler {:join? false :port 8888}))) | |
(defn -main [& args] | |
(start-server)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment