Отправка веб-камеры ping/pong frame из браузера

Я продолжаю читать о сообщениях ping/pong в websockets, чтобы поддерживать связь, но я не уверен, что это такое. Это отдельный тип рамки? (Я не вижу никаких методов для javascript-объекта WebSocket в хроме, связанного с пинг-поном). Или это просто шаблон дизайна (например, я буквально отправляю "ping" или любую другую строку на сервер и отвечаю). Пинг-понг вообще связан с кадрами продолжения?

Причина, по которой я спрашиваю, я использую фреймворк python, который работает за Mongrel2, поэтому мне интересно, есть ли способ отправить Mongrel2 конкретное сообщение ping/pong, которое сообщит ему, чтобы поддерживать соединение без моего python приложение, о котором нужно беспокоиться. Похоже, что у меня есть отдельный HTTP-метод. И я думаю, что выделенный кадр сообщения ping/pong может быть проще (меньше нагрузки на сервер и сеть), чем строка "ping", хотя это, вероятно, не будет иметь большого значения.

EDIT: Я просто посмотрел на RFC 6455, и похоже, что Ping и Pong определенно управляют типами фреймов со своими опкодами. Итак, как мне отправить фрейм Ping из javascript в Chrome?

Ответ 1

Нет API-интерфейса Javascript для отправки фреймов ping или получения кадров с тентом. Это поддерживается вашим браузером или нет. Также нет API для включения, настройки или определения того, поддерживает ли браузер и использует кадры ping/pong. Для этого было обсуждение создания Javascript ping/pong API. Существует вероятность того, что пинги могут быть конфигурируемы/обнаружены в будущем, но маловероятно, что Javascript сможет напрямую отправлять и получать кадры ping/pong.

Однако, если вы контролируете код клиента и сервера, то вы можете легко добавить поддержку ping/pong на более высоком уровне. Вам понадобится какой-то заголовок/метаданные типа сообщения в вашем сообщении, если у вас его нет, но это довольно просто. Если вы не планируете отправлять пинты сотни раз в секунду или иметь тысячи одновременных клиентов, накладные расходы будут минимальными, чтобы сделать это сами.

Ответ 2

Ping предназначен для отправки только от сервера к клиенту, и браузер должен ответить как можно скорее с помощью Pong OpCode, автоматически. Поэтому вы не должны беспокоиться об этом на более высоком уровне.

Несмотря на то, что не все браузеры поддерживают стандарт, как они предполагают, они могут иметь некоторые отличия в реализации такого механизма, и это может даже означать отсутствие функциональности ответа Pong. Но лично я использую Ping/Pong и никогда не видел клиента, который не реализует этот тип OpCode и автоматический ответ при реализации на стороне клиента низкого уровня.