使用HTTP Kit进行流连接/长轮询?

时间:2016-10-24 09:58:25

标签: http clojure http-kit

我正在尝试使用永不关闭的HTTP流连接(这是Gnip Compliance流)。

我想与HTTP Kit合作,但我无法让它发挥作用。如果我传递:stream参数:

@(http/get "http://example.com/stream-connection" {:as :stream})

在请求关闭之前,响应不会返回(并且永远不会完成)。

有办法做到这一点吗?

我和clj-http尝试过同样的事情,没有运气。

1 个答案:

答案 0 :(得分:0)

您是否尝试过通过回调使其异步:

(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。 相反,您应该使用异步回调并迭代流读取器。