Ciągle czytam o wiadomościach ping / pong w gniazdach internetowych, aby utrzymać połączenie, ale nie jestem pewien, jakie one są. Czy jest to inny typ ramki? (Nie widzę żadnych metod w javascriptowym obiekcie WebSocket w chrome związanych z ping-pongiem). Czy jest to tylko wzorzec projektowy (np. Dosłownie wysyłam „ping” lub inny ciąg znaków do serwera i każę mu odpowiedzieć). Czy ping-pong jest w ogóle powiązany z ramkami kontynuacji?
Powodem, dla którego pytam, jest to, że używam frameworka Pythona, który działa za Mongrel2, więc zastanawiam się, czy istnieje sposób na wysłanie Mongrel2 określonej wiadomości ping / pong, która powie mu, aby utrzymywał połączenie bez konieczności mojej aplikacji w języku Python. martw się o to. Wydaje mi się, że analogicznie do posiadania oddzielnej metody HTTP. I wyobrażam sobie, że dedykowana ramka wiadomości ping / pong może być prostsza (mniejsze obciążenie serwera i sieci) niż ciąg „ping”, chociaż prawdopodobnie nie miałoby to większego znaczenia.
EDYCJA: Właśnie spojrzałem na RFC 6455 i wygląda na to, że Ping i Pong są zdecydowanie typami ramek kontrolnych z własnymi opkodami. Jak więc wysłać ramkę Ping z javascript w Chrome?
źródło
Odpowiedzi:
Nie ma interfejsu API JavaScript do wysyłania ramek ping lub odbierania ramek pong. Jest to obsługiwane przez Twoją przeglądarkę lub nie. Nie ma również API do włączania, konfigurowania lub wykrywania, czy przeglądarka obsługuje i używa ramek ping / pong. Odbyła się dyskusja na temat stworzenia w tym celu interfejsu API ping / pong w Javascript . Istnieje możliwość, że pingi będą konfigurowalne / wykrywalne w przyszłości, ale jest mało prawdopodobne, aby Javascript mógł bezpośrednio wysyłać i odbierać ramki ping / pong.
Jeśli jednak kontrolujesz zarówno kod klienta, jak i serwera, możesz łatwo dodać obsługę ping / pong na wyższym poziomie. Będziesz potrzebował jakiegoś nagłówka / metadanych typu wiadomości w swojej wiadomości, jeśli jeszcze ich nie masz, ale to całkiem proste. O ile nie planujesz wysyłania pingów setki razy na sekundę lub nie masz tysięcy jednoczesnych klientów, koszty ogólne będą minimalne, aby zrobić to samodzielnie.
źródło
Ping ma być wysyłany tylko z serwera do klienta, a przeglądarka powinna odpowiedzieć jak najszybciej za pomocą Pong OpCode, automatycznie. Więc nie musisz się tym martwić na wyższym poziomie.
Chociaż nie wszystkie przeglądarki obsługują standard, tak jak przypuszczają, mogą mieć pewne różnice w implementacji takiego mechanizmu, a może nawet oznaczać, że nie ma funkcji odpowiedzi Pong. Ale osobiście używam Ping / Pong i nigdy nie widziałem klienta, który nie implementuje tego typu OpCode i automatycznej odpowiedzi na implementację niskiego poziomu po stronie klienta.
źródło