播放Iteratee用于此用例

时间:2013-03-14 11:52:33

标签: scala playframework playframework-2.1

我正在学习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)))

1 个答案:

答案 0 :(得分:2)

请注意,您可以将多个迭代器应用于同一个枚举器。换句话说,您可以创建streamingTweetIterateesaveTweetToMongoIteratee并将其应用于提供推文的枚举器。

我经常创建一个简单的loggingIteratee,当我在REPL中进行原型设计时,它只会将所有内容汇集到STDOUT。我将它和我正在写的迭代应用于同一个枚举器。

我假设您要使用WebSockets将流推送到客户端?如果你看一下Play附带的聊天演示!你会明白如何去做。