Ich versuche zu lernen, wie man Web-Sockets in Play 2.1 verwendet, und ich habe Probleme, die Web-Socket-URL mit der Routing-Konfiguration meiner App zu arbeiten. Ich begann mit einer neuen Play-Anwendung und der Play framework documentation on websockets. HierBasic Play Framework-Routing und Web-Sockets Beispiel
ist mein conf/routes
:
# Home page
GET / controllers.Application.index
# Websocket test site
GET /wstest controllers.Application.wstest
Dann habe ich die wstest
Funktion meiner Controller-Klasse:
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)
}
}
aber bisher habe ich nur die websocket mit der URL zugreifen können ws://localhost:9000/wstest
(Verwenden des Beispielcodes unter websocket.org/echo.html). Ich war auf der Suche auf der sample/scala/websocket-chat
-Anwendung, die mit dem Play Rahmen kommt, und es wird die Routing-Konfigurationsdatei die websocket zu verweisen, wie folgt aus:
var WS = window['MozWebSocket'] ? MozWebSocket : WebSocket
var chatSocket = new WS("@routes.Application.chat(username).webSocketURL()")
ich mit @routes.Application.wstest.webSocketURL()
und @routes.Application.wstest
meine websocket URL versucht, zu ersetzen. Der erste kompiliert nicht. Der zweite kompiliert, aber der Client und der Server tauschen keine Nachrichten aus.
Wie kann ich meine Play Routing-Konfiguration verwenden, um auf diesen Websocket zuzugreifen? Was mache ich hier falsch?
bearbeiten
Hier ist ein Screenshot von meinem Kompilierungsfehler: "Kann keine HTTP-Request-Header finden Sie hier":
Danke für die Tipps. Ich habe einen Screenshot des Kompilierungsfehlers hinzugefügt. –
Ja, in diesem Fall fehlt die implizite Anfrage in der Vorlage, fügen Sie einfach eine weitere Parameterliste mit '(implizite Anfrage: RequestHeader)' hinzu. –