2013-03-14 32 views
1

我正在學習Iteratee和相關的API,以滿足我的流式推文流傳輸要求之一。使用Play 2.1和Scala 2.10。是否遵循使用Iteratee的最佳方式,這也會產生將鳴叫保存到MongoDB的結果?玩這個用例的Iteratee

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))) 

回答

2

請注意,您可以將多個迭代應用於同一個枚舉器。換句話說,您可以創建一個streamingTweetIteratee和一個saveTweetToMongoIteratee,並將其應用於提供推文的枚舉器。

我經常創建一個簡單的loggingIteratee,當我在REPL中進行原型設計時,它只是將所有內容都彙集到STDOUT。我將它和我正在寫入同一個枚舉器的迭代器一起應用。

我假設你想使用WebSockets爲了向客戶端推送推文?如果您查看Play附帶的聊天演示!你會知道如何去做。