Я продолжаю читать о сообщениях ping / pong в веб-сокетах, чтобы поддерживать соединение, но я не уверен, что это такое. Это особый тип кадра? (Я не вижу никаких методов в объекте javascript WebSocket в Chrome, связанных с пинг-понгом). Или это просто шаблон проектирования (например, я буквально отправляю на сервер команду ping или любую другую строку, и он отвечает). Связан ли пинг-понг с фреймами продолжения?
Причина, по которой я спрашиваю, заключается в том, что я использую платформу python, которая работает за Mongrel2, поэтому мне интересно, есть ли способ отправить Mongrel2 конкретное сообщение ping / pong, которое сообщило бы ему, чтобы оно поддерживало соединение без необходимости моего приложения python беспокоиться об этом. Полагаю, это аналогично тому, что для этого есть отдельный HTTP-метод. И я предполагаю, что выделенный фрейм сообщения ping / pong может быть проще (меньше нагрузки на сервер и сеть), чем строка «ping», хотя это, вероятно, не будет иметь большого значения.
РЕДАКТИРОВАТЬ: Я только что посмотрел на RFC 6455, и похоже, что Ping и Pong определенно являются типами управляющих кадров со своими собственными кодами операций. Итак, как мне отправить фрейм Ping из javascript в Chrome?
источник
Ответы:
Не существует Javascript API для отправки фреймов ping или получения фреймов pong. Это либо поддерживается вашим браузером, либо нет. Также нет API для включения, настройки или определения того, поддерживает ли браузер и использует ли кадры ping / pong. Была дискуссия о создании для этого Javascript ping / pong API . Существует вероятность того, что в будущем ping-запросы можно будет настраивать / обнаруживать, но маловероятно, что Javascript сможет напрямую отправлять и получать кадры ping / pong.
Однако, если вы контролируете и клиентский, и серверный код, вы можете легко добавить поддержку ping / pong на более высоком уровне. Вам понадобится какой-то заголовок / метаданные типа сообщения в вашем сообщении, если у вас их еще нет, но это довольно просто. Если вы не планируете отправлять эхо-запросы сотни раз в секунду или не имеете тысяч одновременных клиентов, накладные расходы будут минимальными, если вы сделаете это самостоятельно.
источник
Ping предназначен для отправки только от сервера к клиенту, и браузер должен ответить как можно скорее с помощью Pong OpCode, автоматически. Так что вам не нужно беспокоиться об этом на более высоком уровне.
Хотя не все браузеры поддерживают стандарт, как они предполагают, у них могут быть некоторые отличия в реализации такого механизма, и это может даже означать, что функция ответа Pong отсутствует. Но лично я использую Ping / Pong и никогда не видел клиента, который не реализует этот тип OpCode и автоматический ответ на низкоуровневой реализации на стороне клиента.
источник