Dans des circonstances normales, lorsque le client se déconnecte, il enverra un paquet fin au serveur. Après avoir reçu le paquet fin, le serveur apprend que la connexion client est déconnectée et déclenche immédiatement le paquet fin. Rappel d'événement onClose.
Cependant, il existe des situations extrêmes telles qu'une panne de courant du client, un arrêt du réseau, un débranchement du câble réseau, un échec de routage, etc. Dans ces situations extrêmes, le client ne peut pas envoyer le paquet fin au serveur, et le serveur ne peut pas savoir que la connexion a été déconnectée. S'il y a une transmission régulière de données de battement de cœur entre le client et le serveur, la déconnexion de la connexion sera découverte relativement rapidement et le rappel de l'événement onClose sera déclenché.
De plus, le pare-feu du nœud de routage fermera les connexions socket qui n'ont pas communiqué depuis longtemps, provoquant la déconnexion des connexions socket longues. Par conséquent le client et le serveur doivent envoyer régulièrement des données de battement de cœur pour éviter que la connexion ne soit déconnectée.
Comment configurer la détection des battements de cœur dans GatewayWorker ?
Actuellement, GatewayWorker prend en charge deux types de détection de battement de cœur. Le serveur définit le nombre de secondes pour fermer la connexion si aucun battement de cœur n'est reçu (recommandé). Il prend également en charge le serveur pour envoyer régulièrement des données de battement de cœur au client (). non recommandé).
Le client envoie régulièrement des battements de cœur (recommandé)
Le client envoie régulièrement des battements de cœur au serveur (l'intervalle est de préférence inférieur à 60 secondes). La configuration du serveur est similaire à la suivante :
$gateway = new Gateway("Websocket://0.0.0.0:8585"); $gateway->pingInterval = 55; $gateway->pingNotResponseLimit = 1; $gateway->pingData = '';
La signification de la configuration ci-dessus est que s'il n'y a pas de requête dans les 55 secondes suivant la connexion du client pingInterval*pingNotResponseLimit=55 secondes, le serveur pensera que le client correspondant a été déconnecté et le serveur fermera la connexion et déclenchera le rappel onClose.
Pour plus de connaissances sur les ouvriers, veuillez prêter attention à la colonne Tutoriel sur les ouvriers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!