line-seq зависает на java.io.BufferedReader в ближайшем будущем - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь обработать поток HTTP с помощью clojure.

Я могу записать поток в файл, но я пытаюсь обработать сообщения с помощью core.async.

Я следовал за этим ответом здесь: Обработка потока сообщений с http-сервера в ближайшем будущем

Однако, когда я вызываю (line-seq) на java.io.BufferedReader, он зависает для меня.

(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 голосов
/ 03 июля 2018

Обратите внимание, что line-seq является ленивым и ничего не будет делать, пока его не закроют строкой или чем-то еще. Возможно, попробуйте

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

или

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

Вы также можете использовать (slurp <input-stream>), чтобы получить содержимое в виде строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...