Повлияет ли батарея iPhone на открытое TCP-соединение, а не на отправку или получение данных? - PullRequest
4 голосов
/ 11 января 2012

В настоящее время я разрабатываю чат-клиент для iphone.На стороне сервера есть node.js с Socket.IO и на iPhone клиент Socket.IO (https://github.com/DanLite/socket.IO-objc)

Мой вопрос: Повлияет ли на батарею iPhone открытое соединение TCPи не отправлять или получать данные в течение 3-4 минут?

Что лучше для батареи?Постоянное соединение TCP или умножение HTTP-запросов.

Спасибо

Редактировать: у меня есть чат + другие функции, такие как (изменение имени, проверка статуса друзей, изменение настроек)

Редактирование2: похоже, что WhatsApp делает это с TCP-соединением

1 Ответ

4 голосов
/ 12 января 2012

При открытии TCP-соединения обе стороны обладают информацией об этом (удаленный ip: порт, локальный ip: порт). Эта информация является простой структурой данных в памяти. Пока не получен пакет RST или истекло время ожидания, соединение считается открытым.

Когда вы отправляете данные по соединению, вы начинаете потреблять процессор и заставляете базовый модуль беспроводной мобильной сети отправлять сигнал, следовательно, расходуете батарею.

Именно поэтому лучше поддерживать TCP-соединение как можно дольше и предпочитать пакетную передачу, а не общение (объединить несколько сообщений приложения).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...