Hello,
Ich möchte in meiner Anwendung per JS kontrollieren, ob die Sitzung noch existiert und wenn NICHT, die komplette Anwendung re-starten.
Wer soll denn die Anwendung neu starten?
Macht das der Client per RPC oder der Server per Kontrollfunktion (Cron-Job)?
Wie lange darf ein Client abwesend bleiben?
Das Problem ist immer das Protokoll. Man kann auf HTTP/s keine echten Sessions fahren sondern es nur umerziehen. Es werden aber immer "halboffne Verbindungen" bleiben. Der Server kann also beim Ausbleiben eines Heartbeats nicht beim Client nachfragen "bist Du noch da?".
Ich hatte hier neulich schon mal eine "Prügelei" mit Matthias um diesen Themenkreis. Der hat mich aber gar nicht verstanden. Vielleicht komme ich ja dieses Mal einen Schritt weiter?
Us obiger Aussage ergibt sich nämlich eine Idee, die bei heutigen Smartphones schon möglich sein könnte: "bidirektionales HTTP". Das bedeutet, dass beide Hosts gleichzeitig einen Client und einen Server betreiben und die Applikation(en) dafür sorg(t|en), dass die gegenseitgen Requests und Responses zueinander finden. Man pflanzt dem HTTP also den wegoperierten Teil von TCP auf einer höheren Schicht wieder ein.
Das System (nicht das Doppel-Protokoll) baut man typischerweise asysmmetrisch auf. Das bedeutet, dass die "Kernkompetenzen" und die Datenhaltung trotzdem beim stationären System verbleiben.
Mit klassischen PCs haben wir sowas schon mal aufgebaut. Es hat so leidlich funktioniert. Für eine Fertigentwicklung für die Straße hat das Institut dann keine Mittel mehr gehabt.
Mit App-Entwicklung kenne ich mich leider (noch nicht) aus. Ich kenne bisher leider auch kein Entwicklungssystem, das dieses Konstrukt untertützt. Aber wenn man sich die Protokolle nochmal ansieht als Grafik und sich dann selber ein Bild malt vom Gesamtkunstwerk, ist es plötzlich nicht mehr schwierig.
Man spart sich damit den kurzen Heartbeat. Ein Puls pro Minute reicht i.d.R. dann. Jeder kann ja beim Anderen nachfragen: Bist Du noch da? Besteht unser Vertrag noch?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg