对于一个项目,我使用InputStream
作为Ring的响应主体。这很好用,但是,当流式传输单个响应时,服务器不响应任何其他请求。
例如,当我启动五个并发请求时,只有第一个请求启动。然后是下一个,依此类推。
这是我的代码的简化版本。我使用clj-http
获取维基百科图片的输入流并将其直接传递给响应。
(ns streaming.server
(:require [ring.adapter.jetty :refer [run-jetty]]
[clj-http.client :as client]))
(defn app [request]
(let [large-image-url "https://upload.wikimedia.org/wikipedia/commons/3/3d/LARGE_elevation.jpg"]
(client/get large-image-url {:as :stream})))
(defn -main [& args]
(run-jetty app {:port 3000 :join? false}))
这是预期的行为吗?我做错了什么?