Я написал несколько простой код clojure, который обращается к API потоковой передачи Twitter. Мой код практически такой же, как пример кода, описанный в документации по API -в Twitter :
(def ^:dynamic *custom-streaming-callback*
(AsyncStreamingCallback. (comp println #(:text %) json/read-json #(str %2))
(comp println response-return-everything)
exception-print))
(defn start-filtering []
(statuses-filter :params {:follow 12345}
:oauth-creds *creds*
:callbacks *custom-streaming-callback*))
. Я слежу за твитами о конкретном пользователе и использую oauth для аутентификации (не показано). Когда я запускаю метод start-filter и открывается соединение с твиттером, все работает хорошо для заклинания, но если поток неактивен немного (около 30 секунд), т.е. нет твитов об этом конкретном пользователе падают вниз, возникает следующая ошибка:
#<EOFException java.io.EOFException: JSON error (end-of-file)>
Я предположил из документации по твиттеру, что при использовании потокового соединения твиттер сохраняет поток открытым на неопределенный срок. Должно быть, я делаю какие-то неверные предположения. В настоящее время я погружаюсь в код clojure twitter-api, чтобы посмотреть, что происходит, но я подумал, что большее количество глаз поможет мне быстрее понять это.