1

私はアプリケーションを - 30 分でリアルタイム ペイントを作成- youtube ビデオで試しています。私は可能な限りそれに従おうとしましたが、完成したと思ったのと同じように、非推奨の警告が表示されます!

私はscalaと遊びを学ぼうとしています。助けを借りずに少しグーグルを試しました。問題を解決するためにどこから始めればよいのかわかりません。

関連するコード スニペットは、ビデオの 26 分あたりにあります。ここにもコピー:

val hubEnum = Enumerator.imperative[JsValue]()
val hub = Concurrent.hub[JsValue](hubEnum)
var counter = 0

def index = Action {
  Ok(views.html.index("Your new application is ready."))
}

def stream = WebSocket.async[JsValue] { request =>
  var out = hub.getPatchCord()
  counter += 1
  var pid = counter
  var in = Iteratee.foreach[JsValue](_ match {
    case message: JsObject => {
      hubEnum push(message ++ JsObject(Seq("pid" -> JsNumber(pid))))
    }
  })
  Promise.pure((in, out))
}

エラー:

[warn] /home/user/devpt/testpaint/app/controllers/Application.scala:12: class PushEnumerator in package iteratee is deprecated: use Concurrent.broadcast instead
[warn]   val hubEnum = Enumerator.imperative[JsValue]()
[warn]       ^
[warn] /home/user/devpt/testpaint/app/controllers/Application.scala:12: method imperative in object Enumerator is deprecated: use Concurrent.broadcast instead
[warn]   val hubEnum = Enumerator.imperative[JsValue]()
[warn]                            ^
[warn] /home/user/devpt/testpaint/app/controllers/Application.scala:13: trait Hub in object Concurrent is deprecated: use Concurrent.broadcast instead
[warn]   val hub = Concurrent.hub[JsValue](hubEnum)
[warn]       ^
[warn] /home/user/devpt/testpaint/app/controllers/Application.scala:13: method hub in object Concurrent is deprecated: use Concurrent.broadcast instead
[warn]   val hub = Concurrent.hub[JsValue](hubEnum)
[warn]                        ^
4

1 に答える 1

2

Concurrent.broadcastはブロードキャストを管理する新しい方法です。Tuple2 内の Enumerator と Channel を返します。

Channelは、プッシュメソッドを介してメッセージを送信できる場所です。

Enumeratorは、クライアントが Channel に送信されたメッセージを取得する方法であり、 Iterateeを介して処理できます。

新しいWebsocket-Chat サンプル アプリは使用法を示しており、ダウンロードすると、関連するコードを Play でメッセージをブロードキャストする新しい方法に置き換えることができます。

于 2013-06-12T15:57:00.753 に答える