wickedweasel
@wickedweasel

Keep-alive сокетов в iOS?

Добрый день, камрады.



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

И вот заинтересовала меня такая тема: какие таймауты и интервалы поддержки соединений лучше устанавливать.

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



Рассматриваются оба контекста:

1) Приложение запущено, находится на переднем плане. Как часто стоит слать пинги, чтобы сокет считался живым и любое сообщение с сервера доходило до клиента почти моментально? Или это вообще не нужно, и достаточно будет TCPшного keep-alive?

2) Приложение запущено, но находится в фоне. Считаем, что в этом случае мы установили keep alive handler раз в 10 минут, как советует iOS-документация для VoIP-приложений. Естественно, такой handler будет ставиться только в случае, когда мы действительно будем заинтересованы в получении сообщений в бэкграунде. В общем, хотел тоже узнать, правильный ли это подход?
  • Вопрос задан
  • 3313 просмотров
Пригласить эксперта
Ответы на вопрос 2
@brainplus
2) keep-alive handler можно и на 3 часа ставить если вам не требуется пробуждаться чаще. Даже можно 100500 часов назначить как интервал между вызовами keep alive handler — поддерживать соединение открытым в случае если ваш сокет помечен для работы в фоне — это задача iOS, вам об этом думать не надо.

Это мое имхо.
Ответ написан
usgleb
@usgleb

1) Я слал keep-alive presense раз в 45 сек. Это было требование back-end который мы использовали. На сколько я понял, эти presense нужны только для back end'a, iOS не закрывал сокет пока работало приложение.

2) Я запускал на проигрывание бесшумный трек что бы приложение работало постоянно и не умирало. Так в системе у него выше приоритет.

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы