我试了好几天,我在这里有点困惑。 我正在使用clojure http-kit来生成keepalive get请求。
(ns weibo-collector.weibo
(:require [org.httpkit.client :as http]
[clojure.java.io :as io]))
(def sub-url "http://c.api.weibo.com/datapush/status?subid=10542")
(defn spit-to-file [content]
(spit "sample.data" content :append true))
@(http/get sub-url {:as :stream :keepalive 3000000}
(fn [{:keys [status headers body error opts]}]
(spit-to-file body)
))
我很确定我与目标服务器建立了持久连接,但没有写入sample.data文件。 我尝试了流和文本。
我也试过ruby版程序,或者创建一个持久连接,仍然没有写。
通常,目标将使用webhook通知我的服务器新数据即将到来,但是如何从持久连接中获取数据?
--- --- EDIT
require 'awesome_print'
url = "http://c.api.weibo.com/datapush/status?subid=10542"
require "httpclient"
c = HTTPClient.new
conn = c.get_async(url)
Thread.new do
res = conn.pop
while true
text = ""
while ch = res.content.read(1)
text = text+ch
break if text.end_with? "\r\n"
end
ap text
end
end
while true
end
上面是一个使用ruby的工作示例,它使用一个线程从连接中读取数据。所以我必须错过一些从clojure获取数据的东西