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
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.
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.
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.
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. –
- 1. Der Server hat die Verbindung geschlossen
- 2. Wird select.poll Leseereignis (select.POLLIN) erkennen, wenn der Socket geschlossen ist
- 3. Erkennen, wenn der Benutzer die Soft-Tastatur entlassen hat
- 4. Warum erkennt dieser Server nicht, dass der Client den Socket für ihn geschlossen hat?
- 5. einige Javascript konvertieren, die auf der Client-Seite auf die Server-Seite arbeitet NodeJS
- 6. erkennen, wenn die Anwendung geschlossen ist
- 7. Node.js - Server hat die Verbindung geschlossen?
- 8. Im Client befindet sich der Unix Stream-Socket immer noch im CONNECTED-Status, obwohl der Server die Verbindung geschlossen hat
- 9. Chrome Extension Messaging API - erkennen, wenn der Port geschlossen ist
- 10. Datei-Upload-Größe auf der Client-Seite erkennen?
- 11. Wann wird der WCF-Client geschlossen?
- 12. Hat der GCC-Compiler eine Option, um die Speicherbeschädigung während der Kompilierung zu erkennen?
- 13. Wie bekomme ich clientseitig statusCode? Javascript
- 14. Wenn ein Tomcat-Server "Client Aborted" sagt und der Client "Vorzeitiges EOF" sagt, wer hat Recht?
- 15. Wie arbeitet Meteor, Client gegen Server?
- 16. "Der Remote-Host hat die Verbindung geschlossen" in Response.OutputStream.Write
- 17. Ausfüllen eines Formulars clientseitig [Javascript]
- 18. ResultSet Ausnahme geschlossen, während in der Mitte, während next() Schleife
- 19. Hat der Server den Socket für jeden Client-Prozess geöffnet?
- 20. Wie wird die Interstitial-Anzeige während der Espressotests gehandhabt (geschlossen)?
- 21. Stream.WriteAsync wirft Der Remote-Host hat die Verbindungsausnahme geschlossen.
- 22. Web-API - Erkennen der Client-Domäne
- 23. Postgre SQL odbc Treiber - Server hat die Verbindung unerwartet geschlossen
- 24. Photoswipe.js erkennen Ereignis, wenn die Pswp-Galerie geschlossen ist
- 25. Erkennen, wenn scrollView gescrollt hat
- 26. "Der Server hat das maximale Wiederherstellungslimit für die Anwendung während der Verarbeitung Ihrer Anfrage erreicht." Fehlermeldung
- 27. Javascript: Bearbeiten, wenn der Benutzer die Eingabe beendet hat
- 28. Kann ich erkennen, wenn ein Hintergrund-Thread von der Anwendung beendet wird, wenn die Anwendung geschlossen wird?
- 29. Kann mit RabbitMQ (Java-Client) festgestellt werden, ob die Netzwerkverbindung während des Verbrauchs geschlossen ist?
- 30. nodejs mysql Fehler: Verbindung verloren Der Server hat die Verbindung geschlossen
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. –
Ja, Sie können Timing-Ereignisse in Javascript erstellen. http://www.devshed.com/c/a/JavaScript/Using-Timers-in-JavaScript/ – CookieOfFortune