Einzelnen Beitrag anzeigen

michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#1

FMX App und TDSRestConnection, was tun, wenn Session abgelaufen ist

  Alt 19. Jul 2023, 10:33
Moin zusammen,

stellt Euch vor, Ihr öffnet eine App, die sich Daten von einem Datasnapserver holt. Es gibt eine Anmeldung, wenn diese erfolgreich ist, gibts eine Session. Daten werden abgerufen, alles gut. Nun legt Ihr die App in den Hintergrund (Android iPhone, Windows, egal). Später geht Ihr wieder in die App, und fordert erneut Daten an. Mittlerweile ist die Session abgelaufen und es gibt eine Exception

Code:
HTTP/1.1 403 Session has expired:
Die angegebene Sitzung ist abgelaufen, weil sie inaktiv war oder eine ungültige Sitzungs-ID hatte.
Diese Meldung erscheint direkt auf dem Bildschirm. (Um nicht ewig auf das Ablaufen der Session zu warten, kann man auch einfach den Datasnap-Server anhalten und neu starten während auf dem Gerät der Client noch läuft. Dann kommt dieselbe Exception.)

Clientseitig
Ich möchte "PreserveSessionID" nicht auf False setzen, da im Internet steht, das würde den Server stressen für jedes Request eine eigene Session zu erzeugen.

Deshalb dachte ich, ich könnte die Exception abfangen, wenn sie auftritt, mich neu verbinden und das Request erneut aufrufen, so dass der Benutzer nix davon mitbekommt und er das Gefühl hat, er ist immer online.

tDSRestConnection hat aber leider kein "OnError" oder ähnliches. Wie fange ich die Exception ab?

Ich möchte auch nicht in jeder einzelnen Datasnap-ClientMethode machen, ich suche einen allgemeingültigen Weg. Hat jemand einen Codeschnipsel oder einen Hinweis?

Serverseitig
ServersessionTimeout auf 0 zu setzen am Server kann ich auch nicht, da ich nur einen tDSServer benutze und keinen Webdispatcher habe.

Wie ist das mit "Invocation" beim Life-Cycle des DSServers? Ist das zu empfehlen als Alternative zu "Session"?

Viele Grüße
Michael
  Mit Zitat antworten Zitat