Веб-сокеты. Потеря интернета, сообщения keep-alive, архитектура приложения и т. Д.

Ну, есть много информации о веб-сокетах. Сама технология потрясающая, в этом нет никаких сомнений. И прежде чем я начну использовать их в своем приложении, я просто хочу, чтобы сообщество ответило на следующие вопросы:

"... для поддержания присутствия приложение может отправлять сообщения keep-alive в WebSocket, чтобы предотвратить его закрытие. из-за тайм-аута простоя ... "

" ... в идеале будущая версия WebSocket будет поддерживать обнаружение тайм-аута, так что она может либо сообщить приложению период для сообщений keep-alive ... "

  1. Это кажется как дежавю. Раньше нам приходилось опрашивать сервер один раз в% period_time%, чтобы получить необходимую обновленную информацию. С веб-сокетами мы должны опрашивать сервер веб-сокетов один раз в% period_time% с помощью сообщений keep-alive , чтобы убедиться, что подключение к Интернету все еще живо / сервер веб-сокетов все еще работает. Какая прибыль?

    И еще кое-что, касающееся этих сообщений keep-alive. Протокол Websocket имеет преимущество в использовании меньшего трафика, чем HTTP (S). Если мы отправляем сообщения keep-alive, похоже, что преимущество трафика исчезает. Или, может быть, нет?

  2. Как мне справиться с потерей интернета в моем приложении, если я использую веб-сокеты? Я имею в виду реальную ситуацию, когда соединение с интернетом внезапно пропадает (я имею в виду, что событие "navigator.offline" не произошло).Следует ли мне использовать какую-то функцию setTimeout для поиска сообщений keep-alive или есть лучший способ справиться с этой ситуацией?

  3. REST дает нам четкое представление о том, как должно работать приложение и как должны выглядеть запросы. Как лучше всего это сделать в приложениях на базе веб-сокетов? Должен ли я просто иметь (скажем) сообщения в кодировке JSON с полем request.action? А как приложение должно выполнять PUT-запросы? В модели REST есть URL-ресурсы для решения этой проблемы, поэтому следует ли использовать комбинацию этих подходов или, может быть, есть что-то более простое?

17
задан Dmitrii Sorin 6 January 2012 в 23:08
поделиться