line-seq在clojure中冻结在java.io.BufferedReader上

时间:2018-07-03 17:08:42

标签: clojure

我正在尝试使用clojure处理HTTP流。

我能够将流写入文件,但是我尝试使用core.async处理消息。

我在这里遵循了这个答案: Processing a stream of messages from a http server in clojure

但是,当我在java.io.BufferedReader上调用(line-seq)时,它会冻结。

(defn trades-stream
  []
  (let [session (new-session)
       {:keys [url sessionid]} (:stream  session)
       dump-url (str  url "?sessionid=" sessionid "&symbols=mu" )
       lines (-> dump-url
                 (client/get {:as :stream})
                 :body
                 io/reader)]
       (line-seq lines )))

有人知道我将如何应对吗?谢谢!

1 个答案:

答案 0 :(得分:0)

请注意,LPMatrixIterator是惰性的,在被迫成字符串或其他东西之前不会做任何事情。也许尝试

line-seq

(println (first (line-seq lines)))

您还可以使用(reduce conj [] (line-seq lines)) ; then print something 将内容作为字符串获取。