Я подключаюсь к твиттер-потоковому API с помощью API версии 2.2 API в примере ниже. Я застрял, пытаясь понять, как отключиться от потока, как только он будет установлен. Есть ли правильный способ сделать это, а не останавливать приложение? Любая помощь будет оценена. Закрыть твиттерное потоковое соединение в игровом каркасе
def watchTweets(keywords : String) = Action { implicit request =>
Logger.debug(s"watchTweets invoked with: $keywords")
val (tweetsOut, tweetChanel) = Concurrent.broadcast[JsValue]
WS.url(s"https://stream.twitter.com/1.1/statuses/filter.json?track=" + URLEncoder.encode(keywords, "UTF-8"))
.sign(OAuthCalculator(Twitter.KEY, Twitter.sessionTokenPair.get))
.postAndRetrieveStream("")(headers => Iteratee.foreach[Array[Byte]] { ba =>
val msg = new String(ba, "UTF-8")
Logger.debug(s"received message: $msg")
val tweet = Json.parse(msg)
tweetChanel.push(tweet)
}).flatMap(_.run)
Ok.chunked(tweetsOut &> Comet(callback = "parent.cometMessage")) }
Так как же оно обрабатывается в 2.4? – sam
Не разрешено в 2.4. Но в 2.5 (в процессе) мы переключились на потоки Akka, что обеспечивает способ асинхронной отправки отмены вверх по течению. –
Я заметил, что на этот раз класс WC расширяет замкнутый интерфейс :), поэтому должно быть легко косоваться, что действительно – sam