Dans mon application, le client est un ensemble de fonctions Javascript dans le navigateur, et il fait un peu de travail - par exemple, la lecture d'un clip. Il utilise XmlHttpRequest pour parler au serveur. Toutefois, le serveur est autorisé à fermer brusquement la connexion car il n'y a pas d'autre moyen, semble-t-il, d'interrompre le client. Le client peut-il détecter, pendant la lecture du clip, que la connexion a été fermée, et ainsi imprimer un message et effacer la page? Toute aide appréciée. merci, Anilpeut côté client Javascript détecter quand le serveur a fermé la connexion http pendant que le client travaille?
Répondre
Il semble que le serveur ne puisse pas notifier le client que la connexion est fermée; Cependant, la méthode de sondage proposée n'est pas aussi efficace qu'une notification aurait été.
Je l'ai résolu en spécifiant qu'à la requête Get NEXT, le client serait informé que sa session est invalide.
Ceci a été implémenté par réécriture d'URL - en ajoutant "jsessionid = [id]" à chaque requête envoyée par les fonctions Javascript. la servlet stocke l'identifiant de session en cours.
Vous pouvez probablement interroger l'objet XmlHttpRequest, alors essayez simplement d'envoyer un signal de présence de temps en temps pour voir si la connexion est fermée. Sinon, le serveur devra envoyer un signal pour indiquer au client qu'il va fermer la connexion.
Si le clip est transmis au client, vous pouvez simplement arrêter de le diffuser.
Cependant, il semble que le clip est en train d'être téléchargé puis lu par le navigateur. Dans ce cas, il est probablement préférable d'utiliser une approche de surveillance comme décrit par CookieOfFortune: Sondez le serveur régulièrement (une fois par seconde environ) et demandez-lui de répondre avec un minuscule message de confirmation. Lorsque la connexion est fermée, demandez au serveur de répondre avec un message négatif. Malheureusement, sans utiliser un système de type comète, il est très difficile d'envoyer un message indiquant la fermeture de la session au serveur. Cependant, gardez à l'esprit que dès que le client a téléchargé un clip, il pourra le lire en entier s'il le souhaite. Malheureusement, il n'y a aucun moyen d'arrêter cela en plus de passer à une approche de streaming. Si la sécurisation de votre contenu est une priorité, je suggère de faire ce changement.
AFAIK, Javascript est monothique. Y at-il une sorte d'exception ou de rappel qui peut être enregistré? Ce que je veux faire, c'est essuyer le navigateur (effacer) lorsque la connexion est fermée. Peut-être qu'un identifiant de session fonctionnera. Je vais essayer cela et poster. –
merci de répondre. mais Javascript est un seul thread. Y at-il une sorte d'exception ou de rappel qui peut être enregistré? Ce que je veux faire, c'est essuyer le navigateur (effacer) lorsque la connexion est fermée. –
oui, vous pouvez créer des événements de synchronisation en Javascript. http://www.devshed.com/c/a/JavaScript/Using-Timers-in-JavaScript/ – CookieOfFortune