Clojure China

io/copy 为什么对于socket不会返回直到服务端断开连接

#1
(defn send-request
  "Sends an HTTP GET request to the specified host, port, and path"
  [host port path]
  (with-open [sock (Socket. host port)
              writer (io/writer sock)
              reader (io/reader sock)
              response (StringWriter.)]
    (.append writer (str "jeff-test"))
    (.flush writer)
    ; block here till server close the connection
    (io/copy reader response)
    (println (slurp reader))
    (println "end   read\n")))

自己实现的echo服务器,客户端给服务端发送消息,但是这里io/copy会block住,直到服务端关闭了客户端连接才会返回,不知何故?

请问Clojure该怎么样收取服务端消息呢?

#2

应该在不同的线程执行。