Contrôler le délai d'attente de pulsation du client dans socket.io
J'ai des clients mobiles connectés à un node.js serveur, l'exécution de socket.io via xhr du scrutin. J'ai deux type de clients:
- Type Un
Lorsque la connexion se décompose en raison de problèmes de réseau (ou que l'
le client se bloque) la valeur par défaut cœur battre délai d'attente est trop long - De Type B
Lorsque la connexion se décompose pour ce client, j'ai besoin de lui donner plus de
le temps de récupérer - il est plus important que le client récupère que
le serveur coupe la connexion/session
Donc ma question est comment puis-je configurer (si c'est possible) le battement de coeur délais d'expiration de la client?
source d'informationauteur Martin
Vous devez vous connecter pour publier un commentaire.
Aussi loin que je peux dire, il y a 2 valeurs de question ici: le serveur envoie des pulsations pour le client de tous les
heartbeat interval
secondes; le client répond directement, si il n'y a pas de réponse, le serveur décide le client est mort. Le client attend un battement de coeur à partir du serveur pourheartbeat timeout
secondes depuis le dernier battement de coeur (qui doit évidemment être plus élevé que leheartbeat interval
). Si elle n'a pas reçu de mot à partir du serveur dansheartbeat timeout
secondes, il suppose que le serveur est mort (et le début de la déconnexion /reconnexion en fonction des autres options que vous avez définies.Les valeurs par défaut sont
heartbeat interval = 25s
etheartbeat timeout = 60s
. Les deux éléments sont définies sur le serveur, leheartbeat timeout
est envoyé au client lors de la connexion.La modification de la
heartbeat timeout
pour un seul client, c'est simple:Cependant sur le serveur, le
heartbeat interval
valeur semble faire partie d'un objet partagé (le Manager, qui est ce que vous obtenez de retour de votrevar io = require("socket.io").listen(server)
appel), ce qui signifie qu'il ne peut pas être facilement changé pour personne sockets.Je suis sûr qu'avec un peu de socket.io de piratage, vous devriez être en mesure de les réaliser, mais vous risquez d'endommager d'autres trucs dans le processus de...
Dans le support.io 1.x, l'API a changé, mais le concept reste le même.
Au lieu de heartbeatInterval et heartbeatTimeout, les propriétés sont pingInterval et pingTimeout. Par exemple,
Consultez la documentation à http://socket.io/docs/server-api/#server(opts:objet)qui vous amènera directement à https://github.com/Automattic/engine.io#methods-1.
Pour compléter la réponse de Claude, vous pouvez définir ces valeurs au serveur de levier, avec le code suivant
et puis vous pouvez créer 2 node.js les serveurs, un pour chaque type de client (A et B), avoir 2 souhaité définir des options (rythme cardiaque délai d'attente et l'intervalle).