我正在学习Iteratee和相关API,以满足我传输实时推文的要求之一。使用Play 2.1和Scala 2.10。遵循使用Iteratee的最佳方法,它也会产生保存鸣叫的结果到MongoDB?
val wsStream = new Enumerator[Array[Byte]] {
def apply[A](iteratee: Iteratee[Array[Byte], A]) = {
WS.url("https://stream.twitter.com/1.1/statuses/filter.json?track=" + term)
.sign(OAuthCalculator(Twitter.KEY, tokens))
.get(_ => iteratee)
}
}
wsStream.apply(Iteratee.foreach(bytes => saveTweetToMongo(bytes)))
答案 0 :(得分:2)
请注意,您可以将多个迭代器应用于同一个枚举器。换句话说,您可以创建streamingTweetIteratee
和saveTweetToMongoIteratee
并将其应用于提供推文的枚举器。
我经常创建一个简单的loggingIteratee
,当我在REPL中进行原型设计时,它只会将所有内容汇集到STDOUT。我将它和我正在写的迭代应用于同一个枚举器。
我假设您要使用WebSockets将流推送到客户端?如果你看一下Play附带的聊天演示!你会明白如何去做。