Ich verwende Play 2.0.1 mit Java. Bis zu diesem Zeitpunkt habe ich eine Seite mit Promise geladen, die Daten aus einer Datenbank anzeigt. Hier ist der ursprüngliche Controller-Code:
%Vor% Das alles funktioniert gut; Die versprochene Seite wird an den Browser gesendet, während der Server nicht blockiert, damit die Datenbankabfrage (ausgeführt in page.generate()
) abgeschlossen wird.
Jetzt möchte ich WebSocket verwenden, um die Seite mit neuen / geänderten Informationen zu aktualisieren, die aus der Datenbank abgerufen werden.
Also habe ich das Chat-Beispiel verwendet, um genau das zu tun (sogar vereinfacht, da ich nur den ausgehenden Kanal verwenden möchte: Server zu Client). Ich habe am Ende von index.scala.html
Folgendes hinzugefügt:
Ich habe routes
datei aktualisiert und einen Handler für webSocket()
request erstellt.
Wenn ich an dieser Stelle versuche, die Seite zu durchsuchen, erhalte ich folgende Fehlermeldung:
%Vor% Dies geschieht bei return ok(views.html.index.render(mainPage));
.
Das Auskommentieren des Skripts aus der HTML-Datei löst dies, aber natürlich wird kein WebSocket geöffnet.
Ist es möglich, Promise und WebSocket in Play zu kombinieren? Vielleicht habe ich es nicht benutzt?
Ich glaube nicht, dass Sie ein Versprechen mit einem Web-Socket verwenden können. Sie können jedoch Akka verwenden, um eine Aufgabe im Hintergrund auszuführen. Zum Beispiel sollte der folgende Code Akka die längere Operation (Datenbankabfrage) im Hintergrund behandeln lassen:
%Vor%Tags und Links java websocket playframework playframework-2.0 promise