Play Framework - Ist es möglich, Promise und WebSocket in Play zu kombinieren?

8

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:

%Vor%

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?

    
Aviel 24.08.2013, 16:49
quelle

1 Antwort

1

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%     
jdroot 25.06.2014 16:18
quelle