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

line-seq freezes on java.io.BufferedReader in clojure

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

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

我在这里遵循了这个答案:
在Clojure中处理来自HTTP服务器的消息流

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

1
2
3
4
5
6
7
8
9
10
(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 )))

知道我该如何处理吗? 谢谢!


请注意,line-seq是惰性的,在被强制为字符串或其他内容之前不会做任何事情。 也许尝试

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

要么

1
(reduce conj [] (line-seq lines))   ; then print something

您也可以使用(slurp )将内容作为字符串获取。