Play 2.1でWebソケットを使用する方法を学習しようとしています。アプリのルーティング設定で動作するWebソケットURLを取得できません。私は新しいPlayアプリケーションとPlay framework documentation on websocketsから始めました。ここで基本PlayフレームワークのルーティングとWebソケットの例
は私conf/routes
です:
# Home page
GET / controllers.Application.index
# Websocket test site
GET /wstest controllers.Application.wstest
それから私は私のコントローラクラスにwstest
機能を追加しました:
object Application extends Controller {
def index = Action {
Ok(views.html.index("Websocket Test"))
}
def wstest = WebSocket.using[String] { request =>
// Log events to the console
val in = Iteratee.foreach[String](println).mapDone { _ =>
Logger.info("Disconnected")
}
// Send a single 'Hello!' message
val out = Enumerator("Hello!")
(in, out)
}
}
しかし、これまでのところ、私は唯一のURL ws://localhost:9000/wstest
(でのWebSocketにアクセスすることができますサンプルコードはwebsocket.org/echo.htmlです)。
var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("@routes.Application.chat(username).webSocketURL()")
を私は@routes.Application.wstest.webSocketURL()
と@routes.Application.wstest
と私のWebSocket URLを交換しようとした:このように、私はプレイフレームワークが付属していますsample/scala/websocket-chat
アプリを見ていた、そしてそれは、WebSocketを参照するために、ルーティング設定ファイルを使用しています。最初のものはコンパイルされません。 2つ目はコンパイルされますが、クライアントとサーバーはメッセージを交換しません。
Playルーティング設定を使用してこのWebSocketにアクセスするにはどうすればよいですか?私はここで間違って何をしていますか?
編集
ここに私のコンパイルエラーのスクリーンショットで、「ここでは任意のHTTPリクエストヘッダを見つけることができません」:
ヒントをありがとう。コンパイルエラーのスクリーンショットを追加しました。 –
そのような場合、暗黙の要求がテンプレートにはありません。 '(暗黙の要求:RequestHeader)を持つ別のパラメータリストを追加するだけです。 –