[identity profile] zhoog.livejournal.com posting in [community profile] useful_faq
Есть вайфай точка (онлайм), iPhone 5s и приложение WhatsApp на нем.

Если юзать E, 3G или LTE — всё ОК. Но с вайфаем какая-то аномалия. Прихожу домой, подцепляю вайфай и как бы всё хорошо. Но потом выясняется, что мне в WhatsApp народ пишет, а уведомления до меня не доходят. То есть я сижу такой, на расслабоне, а в WhatsApp куча сообщений. Когда открываю WhatsApp, вижу надпись «Подключение...». Без подключения, конечно. Вырубаю вайфай, тут же получаю 24 сообщения в WhatsApp, которые уже полтора часа как там.

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

Date: 2016-09-09 06:41 pm (UTC)
From: [identity profile] nanometrolog.livejournal.com
У меня тоже самое.
Это проблема вотсапа по моему - он не хочет дергать интернет-канал.

Date: 2016-09-09 10:26 pm (UTC)
From: [identity profile] karpion.livejournal.com
Что значит "дергать интернет-канал"???

Date: 2016-09-09 10:54 pm (UTC)
From: [identity profile] nanometrolog.livejournal.com
"периодически будить устройство, включать WiFi и проверять наличие новых сообщений"

Date: 2016-09-14 12:36 am (UTC)
From: [identity profile] karpion.livejournal.com
Если бы Вы были знакомы с понятиями "пятиуровневая/семиуровневая модель OSI" и "уровни абстракции" - то Вы бы знали, что программа, работающая с Интернетом (т.е. обращающаяся к серверам с какими-то запросами) не должна знать о канальном уровне. Т.е. она не должна различать тип соединения - LAN, WiFi, SLIP/PPP или что-то ещё. И соответственно, она не должна "включать WiFi".
Программа должна просто открыть TCP-соединение с сервером и посылать туда запросы; а ядро будет упаковывать эти запросы в пакеты и запихивать в WiFi-адаптер; не само, а через драйвер этого адаптера. А уже драйвер должен "включать WiFi", если тот выключен.

Топиккастер пишет: "Когда открываю WhatsApp, вижу надпись «Подключение...». Без подключения, конечно." - это значит, что программа то ли пытается открыть TCP-соединение с сервером; то ли уже открыла TCP-соединение с сервером и пытается отправить туда запросы и получить ответы.
Если бы ядро считало, что WiFi-соединения нет - оно бы просто отказало программе в открытии TCP-соединения с сервером. Однако, тогда программа может продолжать попытки открыть TCP-соединение с сервером.
Проблема в том, что тупые разработчики считают юзеров ещё более тупыми и не считают нужным вывести более подробную информацию о том, на каком этапе затык.

В идеале надо было бы посмотреть tcpdump на WiFi-роуере и выяснить, какие пакеты через него проходят. Впрочем, скорее всего - пакеты просто не проходят, а проблему в WiFi так просто определить не получится.