Как реализовать архитектуру пассивного месенджера?
Месенджер нужно делать на вебсокетах, это понятно. Можно кидать кто когда начали писать, отправлено / доставлено и прочие приятности риалтайма
Для экономии оперативной памяти было решено при выходе из диалога закрывать вебсокетное соединение и переходить на пуши. НО пуши на клиентском устройстве можно запретить (как на мобилках, так и вебверсии)
По хорошему человек ушел в другой раздел, а когда ему пришло сообщение - он должен про это узнать. Как я написал выше, вне диалога вебсокетное закрывается
1) Если на клиенте запретили пуши - запретили ли те, которые не визуальные? т е пуши то нужны не те, что на выключенный телефон приходят, а те что при открытом приложении будут (вдруг это разные вещи и я зря костыли ищу)
2) Как вариант был лонгпул, но переживаю за ресурсы
3) запрос на сервер каждые N сек - ужасный вариант
по-моему, вы зря от лонгполла отказались, при правильной организации бэкенда, открытый лонгполл ресурсы сервера практически не ест.
тут ключевой вопрос в том, кто у вас на беке на запросы отвечает.