Ich lese immer wieder über Ping / Pong-Nachrichten in Websockets, um die Verbindung aufrechtzuerhalten, bin mir aber nicht sicher, was sie sind. Ist es ein bestimmter Rahmentyp? (Ich sehe keine Methoden für ein Javascript-WebSocket-Objekt in Chrome im Zusammenhang mit Ping-Pong). Oder ist es nur ein Entwurfsmuster (z. B. sende ich buchstäblich "Ping" oder eine andere Zeichenfolge an den Server und lasse ihn antworten). Bezieht sich Ping-Pong überhaupt auf Fortsetzungsrahmen?
Der Grund, den ich frage, ist, dass ich ein Python-Framework verwende, das hinter Mongrel2 ausgeführt wird. Daher frage ich mich, ob es eine Möglichkeit gibt, Mongrel2 eine bestimmte Ping / Pong-Nachricht zu senden, die es anweist, die Verbindung aufrechtzuerhalten, ohne dass meine Python-App dies tun muss Sorgen Sie sich darum. Analog zu einer separaten HTTP-Methode, denke ich. Und ich stelle mir vor, ein dedizierter Ping / Pong-Nachrichtenrahmen könnte einfacher sein (weniger Belastung für Server und Netzwerk) als der String "Ping", obwohl das wahrscheinlich nicht allzu wichtig wäre.
EDIT: Ich habe mir gerade RFC 6455 angesehen und es sieht so aus, als wären Ping und Pong definitiv Steuerrahmen- Typen mit ihren eigenen Opcodes. Wie sende ich einen Ping-Frame aus Javascript in Chrome?
quelle
Antworten:
Es gibt keine Javascript-API zum Senden oder Empfangen von Pong-Frames. Dies wird entweder von Ihrem Browser unterstützt oder nicht. Es gibt auch keine API zum Aktivieren, Konfigurieren oder Erkennen, ob der Browser Ping / Pong-Frames unterstützt und verwendet. Es gab Diskussionen darüber, eine Javascript-Ping / Pong-API dafür zu erstellen . Es besteht die Möglichkeit, dass Pings in Zukunft konfigurierbar / erkennbar sind, aber es ist unwahrscheinlich, dass Javascript Ping- / Pong-Frames direkt senden und empfangen kann.
Wenn Sie jedoch sowohl den Client- als auch den Servercode steuern, können Sie problemlos Ping / Pong-Unterstützung auf einer höheren Ebene hinzufügen. Sie benötigen eine Art Nachrichtentyp-Header / Metadaten in Ihrer Nachricht, wenn Sie das noch nicht haben, aber das ist ziemlich einfach. Wenn Sie nicht vorhaben, Pings hunderte Male pro Sekunde zu senden oder Tausende von Clients gleichzeitig zu haben, ist der Overhead ziemlich gering, um dies selbst zu tun.
quelle
Ping soll nur vom Server zum Client gesendet werden, und der Browser sollte so schnell wie möglich automatisch mit Pong OpCode antworten. Sie müssen sich also auf höherer Ebene keine Sorgen machen.
Obwohl nicht alle Browser Standard unterstützen, wie sie annehmen, können sie einige Unterschiede bei der Implementierung eines solchen Mechanismus aufweisen, und es kann sogar bedeuten, dass es keine Pong-Antwortfunktion gibt. Aber ich persönlich verwende Ping / Pong und habe noch nie einen Client gesehen, der diese Art von OpCode nicht implementiert, und keine automatische Antwort auf die clientseitige Implementierung auf niedriger Ebene.
quelle