peut Javascript côté client détecter lorsque le serveur a fermé la connexion http pendant que le client fonctionne?

StackOverflow https://stackoverflow.com/questions/737878

  •  09-09-2019
  •  | 
  •  

Question

Dans ma demande, le client est un ensemble de fonctions JavaScript dans le navigateur, et il fait un 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, il semble, d'interrompre le client. le client peut détecter, alors qu'il joue le clip, que la connexion a été fermée, et ainsi imprimer un message et d'effacer la page? Toute aide appréciée. Merci, Anil

Était-ce utile?

La solution 3

Il ne semble que le serveur ne peut pas avertir le client que la connexion est fermée; mais le mode de scrutin proposé ne soit pas aussi efficace qu'une notification aurait été.

Je l'ai résolu en précisant que lors de la prochaine Obtenir demande, le client serait dit que sa session est invalide.

Ceci a été mis en œuvre par la réécriture d'URL - annexant « jsessionid = [id] » sur chaque requête envoyée par les fonctions Javascript. le servlet stocke l'identifiant de session courant.

Autres conseils

Si le clip est transmis en continu au client, vous pouvez simplement arrêter de le servir.

Cependant, il semble que le clip est en cours de téléchargement, puis joué par le navigateur. Dans ce cas, il est probablement préférable d'utiliser une approche de surveillance comme décrit par CookieOfFortune: interroge le serveur régulièrement (une fois par seconde environ) et l'obtenir pour répondre avec petit message de la confirmation. Lorsque la connexion est fermée, obtenir le serveur pour répondre avec un messgage négatif.

Malheureusement, sans utiliser un système semblable à une comète, il est très difficile d'obtenir le serveur pour « envoyer » un message indiquant la fermeture de session.

Gardez à l'esprit que, dès que le client a téléchargé un clip qu'ils seront en mesure de jouer pleinement s'ils veulent. Malheureusement, il n'y a aucun moyen d'arrêter ce en plus de passer à une approche en streaming. Si la sécurisation de votre contenu est une priorité, je vous suggère de faire ce changement.

Vous pouvez probablement interroger l'objet XMLHttpRequest, alors essayez juste d'envoyer un battement de coeur tous les temps en temps pour voir si la connexion est fermée. Dans le cas contraire, le serveur devrait envoyer un certain signal pour dire au client qu'il va fermer la connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top