2016-06-29 10 views
1

In meiner Play 2.x-Webanwendung muss ich alle angemeldeten Benutzer auflisten, den Zeitpunkt, an dem sie die Sitzung begonnen haben, den Zeitpunkt ihrer letzten Aktion und ob seit ihrer letzten Aktion ein Zeitraum von N Minuten vergangen ist. Beende die Sitzung.Ist es OK, im Spiel für Scala Stateful zu werden?

Eine Möglichkeit, dies zu erreichen, ist die Verwendung des Caches (Play verwendet EHCache). Aber was ich gelernt habe ist, dass es keine gute Sache ist, statusbehaftete Informationen auf Serverseite zu haben (eine der Stärken von Play 2 ist, dass das Framework zustandslos ist).

Was ist der beste Weg, um meine Anforderungen zu unterstützen?

+0

Sie können nur die Anmeldezeit in der Session des Spiels speichern (was eigentlich eine einfache Zeichenfolge im Cookie ist). Überprüfen Sie diese Sitzung dann jedes Mal in "ActionBuilder" von "Filter". – jilen

+0

Ich möchte keine Informationen in einem Cookie auf der Client-Seite speichern – ps0604

Antwort

0

Dies hängt davon ab ... Kann der Zustand aus einem dauerhaften Speicher wiederhergestellt werden? Wenn ja, dann verwende einen Cache (entweder im Speicher oder extern, z. B. Memcached). Wenn nicht, sollten Sie einen externen dauerhaften Datenspeicher verwenden.

+0

Was ist ein langlebiger Speicher? eine Datenbank? Ich werde den Status nicht in einer Datenbank speichern. Warum würde ich die letzte Aktion des Benutzers in einer Datenbank speichern? Anscheinend ist es keine schlechte Methode, Sitzungsdaten in einem Cache zu speichern. – ps0604

+0

Ein langlebiger Speicher ist ein Ort, an den Sie sich wenden können, und stellen Sie sicher, dass Sie ihn jederzeit wieder herausholen können. Dies kann eine relationale Datenbank, eine NoSQL-Datenbank (z. B. Mongo) oder eine Vielzahl anderer Dinge sein. Wenn Sie den Status problemlos wiederherstellen können oder wenn Sie den Status nicht verlieren möchten, müssen Sie ihn nicht in einem dauerhaften Speicher ablegen. Ein Cache ist ein nicht-dauerhafter Speicher. –