2009-04-10 9 views
1

In meiner Anwendung ist der Client ein JavaScript-Satz von Funktionen im Browser, und es tut etwas Arbeit - zum Beispiel, einen Clip abzuspielen. Es verwendet XmlHttpRequest, um mit dem Server zu sprechen. Der Server darf jedoch die Verbindung abrupt schließen, da es auf andere Weise nicht scheint, den Client zu unterbrechen. Kann der Client während der Wiedergabe des Clips erkennen, dass die Verbindung geschlossen wurde, und so eine Nachricht drucken und die Seite löschen? Jede Hilfe wird geschätzt. Danke, Anilkann clientseitig Javascript erkennen, wenn der Server die http-Verbindung geschlossen hat, während der Client arbeitet?

Antwort

0

Es scheint, dass der Server nicht den Client benachrichtigen kann, dass die Verbindung geschlossen ist; Die vorgeschlagene Methode ist jedoch nicht so effizient wie eine Benachrichtigung.

Ich löste es, indem Sie angeben, dass der Client bei der NEXT Get-Anforderung informiert werden würde, dass seine Sitzung ungültig ist.

Dies wurde durch URL-Rewriting - Anfügen von "jsessionid = [id]" bei jeder Anfrage durch die Javascript-Funktionen implementiert. Das Servlet speichert die aktuelle Sitzungs-ID.

0

Sie können wahrscheinlich das XmlHttpRequest-Objekt abfragen, versuchen Sie also, ab und zu einen Herzschlag zu senden, um zu sehen, ob die Verbindung geschlossen ist. Andernfalls müsste der Server ein Signal senden, um dem Client mitzuteilen, dass die Verbindung geschlossen wird.

+0

danke für die antwort. aber Javascript ist single threaded. Gibt es eine Art von Ausnahme oder Callback, für die registriert werden kann? Was ich tun möchte ist, wischen Sie den Browser sauber (löschen), wenn die Verbindung geschlossen ist. –

+0

Ja, Sie können Timing-Ereignisse in Javascript erstellen. http://www.devshed.com/c/a/JavaScript/Using-Timers-in-JavaScript/ – CookieOfFortune

1

Wenn der Clip zum Client gestreamt wird, könnten Sie einfach aufhören, ihn zu bedienen.

Es scheint jedoch, dass der Clip heruntergeladen und dann über den Browser abgespielt wird. In diesem Fall ist es wahrscheinlich am besten, einen Watchdog-Ansatz zu verwenden, wie von CookieOfFortune beschrieben: Poll den Server regelmäßig (einmal in der Sekunde oder so) und erhalte ihn mit einer winzigen Bestätigungsnachricht zu antworten. Wenn die Verbindung geschlossen ist, lassen Sie den Server mit einer negativen Nachricht antworten.

Unglücklicherweise ist es sehr schwierig, den Server dazu zu bringen, eine Nachricht zu senden, die die Schließung der Sitzung anzeigt, ohne ein kometähnliches System zu verwenden.

Denken Sie jedoch daran, dass sobald der Kunde einen Clip heruntergeladen hat, er sie vollständig abspielen kann, wenn er möchte. Leider gibt es keine Möglichkeit, dies zu stoppen, zusätzlich zu einem Streaming-Ansatz. Wenn das Sichern Ihrer Inhalte Priorität hat, würde ich vorschlagen, diese Änderung vorzunehmen.

+0

AFAIK, Javascript ist single-threaded. Gibt es eine Art von Ausnahme oder Callback, für die registriert werden kann? Was ich tun möchte, ist, wischen Sie den Browser sauber (löschen), wenn die Verbindung geschlossen ist. Vielleicht funktioniert eine Sitzungs-ID. Ich werde das versuchen und zurück posten. –

Verwandte Themen