我正在尝试使用永远不会关闭的 HTTP 流连接(它是 Gnip Compliance 流)。
我想使用HTTP Kit,但我无法让它工作。如果我通过:stream
参数:
@(http/get "http://example.com/stream-connection" {:as :stream})
在请求关闭之前响应不会返回(并且永远不会完成)。
有没有办法做到这一点?
我用clj-http尝试过同样的事情,没有运气。
您是否尝试过通过回调使其异步:
(http/get "http://example.com/stream-connection" {:as :stream}
(fn [{:keys [status headers body error opts]}]
;; body is a java.io.InputStream
(with-open [inp body]
(let [rdr (clojure.java.io/reader inp)]
(doseq [i (cheshire.core/parsed-seq rdr)]
(println i))))))
据我了解,连接一直挂起,直到它读取整个流(永无止境),所以你不应该在这里使用 deref 。相反,您应该使用异步回调和迭代流阅读器。