1

Je travaille sur un site Web où certains événements sont diffusés aux clients à l'aide de SSE (API EventSource). Lors du test de mon site sur la version mobile de Chrome pour Android, j'ai remarqué que la connexion était perdue lorsque la chaîne était inactive pendant environ cinq minutes.Perte de connexion des événements SSE (Server-sent events) sur les téléphones mobiles

J'ai utilisé plusieurs appareils Android, avec différents transporteurs et différents navigateurs et le résultat est le même, peu importe si l'écran est allumé ou éteint. Desktop Chrome semble maintenir la connexion en vie plus longtemps.

Impossible de trouver des informations à ce sujet, et en essayant de déboguer le problème, tout ce que j'ai reçu était un paquet TCP "FIN" reçu de l'adresse IP du téléphone environ 3 minutes et demi après l'envoi du dernier événement.

L'événement onerror d'EventSource n'est pas déclenché, donc je ne peux pas savoir quand la connexion a été interrompue pour en lancer une nouvelle.

Y at-il un moyen d'éviter ce problème ou dois-je simplement envoyer un faux message toutes les 30 secondes pour empêcher la connexion au ralenti?

Merci à l'avance

Répondre

0

Vous pouvez définir le champ retry pour établir la reconnection time de EventSource exemple

  • Si le nom du champ est "Retry"

    • Si le champ La valeur est composée uniquement de chiffres ASCII, puis interprète la valeur du champ sous la forme d'un entier dans la base dix et définit le temps de reconnexion du flux d'événements à cet entier. Sinon, ignorez le champ.
+0

Merci pour votre réponse, invité! Malheureusement, envoyer un "réessayer" ne fait aucune différence: c'est comme si le client abandonnait la connexion et ne faisait rien pour l'établir de nouveau. – user683887

+0

Avez-vous essayé d'envoyer des messages en moins de cinq minutes? – guest271314

+0

Oui, si j'envoie des messages, par exemple, toutes les deux minutes, la connexion ne baisse jamais. Donc, je pourrais envoyer des messages "keep-alive" à chaque minute, mais je me demandais s'il y avait une meilleure façon de le faire. – user683887