Как читать данные ответа из Twitter Streaming API - статусы POST/фильтр? У меня установлено соединение, и я получаю код статуса 200, но я не знаю, как читать твиты. Я просто хочу напечатать твиты, когда они придут.Playframework и Twitter Streaming API
ws.url(url)
.sign(OAuthCalculator(consumerKey, requestToken))
.withMethod("POST")
.stream()
.map { response =>
if(response.headers.status == 200)
println(response.body)
}
EDIT: Я нашел это решение
ws.url(url)
.sign(OAuthCalculator(consumerKey, requestToken))
.withMethod("POST")
.stream()
.map { response =>
if(response.headers.status == 200){
response.body
.scan("")((acc, curr) => if (acc.contains("\r\n")) curr.utf8String else acc + curr.utf8String)
.filter(_.contains("\r\n"))
.map(json => Try(parse(json).extract[Tweet]))
.runForeach {
case Success(tweet) =>
println("-----")
println(tweet.text)
case Failure(e) =>
println("-----")
println(e.getStackTrace)
}
}
}
Спасибо за разъяснение – mkovacek
Возможно ли позднее тесное соединение? Я планирую иметь несколько запросов для отслеживания разных слов, и я хочу, чтобы в какое-то время закрывалось определенное соединение? – mkovacek
Посмотрите на [Управление динамическим потоком] (http://doc.akka.io/docs/akka/2.4.8/scala/stream/stream-dynamic.html) в документах Akka. Одна идея: создать общий коммутатор kill, а затем добавить его в поток с помощью 'source.via (killSwitch.flow)'. Запуск 'shutdown()' на killswitch должен закрыть соединение. – Mikesname