我编写了一些简单的 clojure 代码来访问 twitter 流 api。我的代码与 twitter-api 文档中描述的示例代码基本相同:
(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-filtering 方法并使用 twitter 打开连接时,一切正常,但如果流有一段时间不活动(大约 30 秒),即没有关于这个特定用户的推文出现,出现以下错误:
#<EOFException java.io.EOFException: JSON error (end-of-file)>
我从 twitter 文档中假设,当使用流连接时,twitter 会无限期地保持流打开。我一定是做了一些不正确的假设。我目前正在研究 clojure twitter-api 代码以查看发生了什么,但我认为更多的眼睛会帮助我更快地解决这个问题。