Добрый день, камрады.
Сам я из мира серверной разработки, но на данный момент разрабатываю, скажем так, сокетный сервер для обслуживания мобильных приложений. Суть в следующем: хочется поддерживать соединение с сервером, чтобы сервер мог в любой момент послать клиенту сообщение.
И вот заинтересовала меня такая тема: какие таймауты и интервалы поддержки соединений лучше устанавливать.
При этом хотелось бы минимально кушать батарею на обслуживание сетевого подключения, если оно не используется для доставки значимых сообщений.
Рассматриваются оба контекста:
1) Приложение запущено, находится на переднем плане. Как часто стоит слать пинги, чтобы сокет считался живым и любое сообщение с сервера доходило до клиента почти моментально? Или это вообще не нужно, и достаточно будет TCPшного keep-alive?
2) Приложение запущено, но находится в фоне. Считаем, что в этом случае мы установили keep alive handler раз в 10 минут, как
советует iOS-документация для VoIP-приложений. Естественно, такой handler будет ставиться только в случае, когда мы действительно будем заинтересованы в получении сообщений в бэкграунде. В общем, хотел тоже узнать, правильный ли это подход?