使用HTTP工具包进行流连接/长轮询?

使用HTTP工具包进行流连接/长轮询?,http,clojure,http-kit,Http,Clojure,Http Kit,我试图使用一个永不关闭的HTTP流连接(这是Gnip合规流) 我想和你一起工作,但我不能让它工作。如果我传递:stream参数: @(http/get "http://example.com/stream-connection" {:as :stream}) 在请求关闭之前,响应不会返回(并且永远不会完成) 有办法做到这一点吗 我也尝试过同样的方法,没有运气。您是否尝试过通过回调使其异步: (http/get "http://example.com/stream-connection" {:a

我试图使用一个永不关闭的HTTP流连接(这是Gnip合规流)

我想和你一起工作,但我不能让它工作。如果我传递
:stream
参数:

@(http/get "http://example.com/stream-connection" {:as :stream})
在请求关闭之前,响应不会返回(并且永远不会完成)

有办法做到这一点吗


我也尝试过同样的方法,没有运气。

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

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

您是否查看了http工具包网站上的示例:?不。我认为服务器与客户端无关?哦,我的错-我误读了您的问题-抱歉。不用担心。Java(/Clojure)服务器的细节要比客户端多得多。