Je continue à lire sur les messages ping / pong dans les websockets pour maintenir la connexion active, mais je ne suis pas sûr de ce qu'ils sont. S'agit-il d'un type de trame distinct? (Je ne vois aucune méthode sur un objet javascript WebSocket dans chrome lié au ping-pong). Ou est-ce juste un modèle de conception (par exemple, j'envoie littéralement "ping" ou toute autre chaîne au serveur et je le fais répondre). Le ping-pong est-il lié aux trames de continuation?
La raison pour laquelle je demande est que j'utilise un framework python qui fonctionne derrière Mongrel2, donc je me demande s'il existe un moyen d'envoyer à Mongrel2 un message ping / pong spécifique qui lui dirait de maintenir la connexion active sans que mon application python ait besoin de inquiétez-vous à ce sujet. Analogue à une méthode HTTP distincte, je suppose. Et j'imagine qu'un cadre de message ping / pong dédié pourrait être plus simple (moins de charge sur le serveur et le réseau) que la chaîne "ping", même si cela n'aurait probablement pas trop d'importance.
EDIT: Je viens de regarder RFC 6455 et il semble que Ping et Pong sont définitivement des types de trames de contrôle avec leurs propres opcodes. Alors, comment envoyer un cadre Ping à partir de JavaScript dans Chrome?
la source
Réponses:
Il n'y a pas d'API Javascript pour envoyer des trames ping ou recevoir des trames pong. Ceci est soit pris en charge par votre navigateur, soit non. Il n'y a pas non plus d'API pour activer, configurer ou détecter si le navigateur prend en charge et utilise des trames ping / pong. Il y a eu une discussion sur la création d'une API Javascript ping / pong pour cela. Il est possible que les pings soient configurables / détectables dans le futur, mais il est peu probable que Javascript puisse envoyer et recevoir directement des trames ping / pong.
Cependant, si vous contrôlez à la fois le code client et le code serveur, vous pouvez facilement ajouter le support ping / pong à un niveau supérieur. Vous aurez besoin d'une sorte d'en-tête / de métadonnées de type de message dans votre message si vous ne l'avez pas déjà, mais c'est assez simple. À moins que vous ne prévoyiez d'envoyer des pings des centaines de fois par seconde ou que vous ayez des milliers de clients simultanés, la surcharge sera assez minime pour le faire vous-même.
la source
Ping est destiné à être envoyé uniquement du serveur au client, et le navigateur doit répondre dès que possible avec Pong OpCode, automatiquement. Vous n'avez donc pas à vous en soucier à un niveau supérieur.
Bien que tous les navigateurs ne prennent pas en charge la norme comme ils le supposent, ils peuvent avoir des différences dans la mise en œuvre de ce mécanisme, et cela peut même signifier qu'il n'y a pas de fonctionnalité de réponse Pong. Mais personnellement, j'utilise Ping / Pong et je n'ai jamais vu de client qui n'implémente pas ce type d'OpCode et de réponse automatique sur l'implémentation côté client de bas niveau.
la source