читаю код и не понимаю, как это может работать в продакшене. Сценарий Keepаlive очень долбануто реализован: отправили keepalive, в следующем цикле ждём PINGRESP. И если не получили - мы сломались. Другими словами, таймаут на получение PINGRESP - это время, которое мы даём на чтение пакета. Мне придётся торчать по 500-600 мс в цикле, блокируя девайс(!!!) Потому что, если я поставлю меньше - я словлю отключение. Не вижу никаких путей обхода этой проблемы, либо блокировать девайс аж на полсекунды каждый цикл, либо использовать FreeRTOS. Что я делаю не так? Не может же не быть нормального асинхронного клиента на сях под embedded?
Помню, давно уже, мыкался с этой либой, плюнул, там ещё есть кривые места
Какой брокер используешь?
Обсуждают сегодня