Flutter аппликации и IoT устройство должны уметь в реальном времени обмениваться данными по инициативе любой из сторон. К одному IoT устройству могут подключаться многие аппликации, но лишь имеющие на это право.
Предполагаемая нагрузка на сервер: сотни тысяч устройств, аппликаций раз в 10 больше.
Актуальное состояние IoT устройств и ряд дополнительных данных должны храниться на сервере, чтобы их можно было оттуда забрать в другую аппликацию.
Прога для IoT будет писаться другим человеком, там, скорее всего, какой-нибудь Си.
Вопрос к знатокам: насколько подходит для этих целей Firebase?
Слышал про жалобы на задержки при передаче данных, что для real time неприемлемо. Рассматриваемые конкуренты: Телеграм боты или самописный сервер.
Какой realtime вам нужен?
Чтобы 2-4 КВ данных пролетали с подтверждением о получении до секунды.
Есть опенсурс селф хостед решение с клиентом под флатер Называется centrifuge Клиент под дарт немного через жепу правда написан) https://github.com/centrifugal/centrifugo
Ну и в догонку статьи типа таких https://phoenixframework.org/blog/the-road-to-2-million-websocket-connections https://habr.com/ru/company/vk/blog/331784/
О, интересненько! Сеньк-с 🙏
Но клиент рабочий, да и самому имплементацию написать совершенно не сложно Основная фишка же в сервере
Также у вас всегда есть вариант с gRPC Ну и самое сложное во всех этих вебсокетах - это нагрузка на сервер и большое количество открытых соединений держать Ну и гарантировать доставку, конечно Но если у вас это буквально не чат, когда все со всеми в реальном времени, а скажем как группа чатов, когда некоторые с некоторыми То тут можно обыграть балансировкой на стороне клиента Если простым языком: представьте что есть игра, скажем стрелялка с одной стороны тут все играют и постоянные соединения но с другой, можно разделить на отдельные сервера, по 12-64 человека под игру и какой то общий http сервер, который говорит какие сервера доступны и сколько там играет
В идеале запустить сервер на самом IoT устройстве, чтобы к нему обращались несколько клиентов с разными правами и он мог пушить клиентам по своей инициативе (даже хотя бы через другой сервер, тот же Firebase), а всем остальным был отлуп. Это решило бы проблему самым изящным образом. Но я пока не располагаю данными о ресурсах устройства, чтобы знать, потянет ли оно такой сервер, если еще и протокол защищенный использовать.
А как будешь решать проблему с NAT'ом?)
"самое сложное во всех этих вебсокетах - это нагрузка на сервер и большое количество открытых соединений держать" - поэтому в качестве варианта рассматривается Телеграмм бот. Но тогда у всех интересантов должны быть профили в телеге. Хозяин IoT устройства создаёт бота, и открывает свой чат с устройством, к которому могут быть подключены остальные заинтересованные пользователи. Чтобы избежать автоматического удаления чата Телеграммом, организовать чат из ограниченного числа сообщений с их редактированием. Но это тоже пока гипотетическая архитектура, своего рода аналог gRPC.
Звучит как бред из 10)
Почему бред? Если абстрагироваться от аппликации, то IoT устройство, управляемое через Telegram bot прямо из чата вполне себе реальная тема, уже имеющая свою девелоперскую традицию )
Вот иронизируешь, а ведь телеграм ещё не заблокирован. 😁
Зачем нужна реалтайм фаербейз и пуш нотификейшены, если есть телеграм драйвен девелопмент) Да еще для такой чувствительной и интимной вещи как iot)
Я же писал выше: коллеги со стороны IoT сравнивали передачу данных через Firebase с Телеграмм ботом и рассказывали, что это секунды в Fb против микросекунд в телеге. Может просто написали криво, не исключаю. Сам еще не проверял. На Fb нотификации здесь ранее жаловались, что запаздывают и это зависит от типа телефона. Так то по описанию Firebase очень хорошо подходит, особенно если часть работы на функции переложить.
А вам получается база данных не нужна?
Обсуждают сегодня