Похоже, у вас уже есть лучший подход со встроенными примитивами, то есть системой присутствия Firebase.Одно замечание по поводу onDisconnect
: обнаружение грязного разъединения займет всего много времени (сбой приложения, потеря сетевого подключения и т. Д.).В случае чистого отключения (приложение закрыто), onDisconnect
должен сработать почти сразу.
Если поведение onDisconnect
не подходит для ваших нужд, вам необходимо реализоватьотдых в вашем приложении.
Первое, что пришло на ум, - это активный keep-alive, который, похоже, уже используется в # 2.Учитывая, что вы хотите задержку не более 3 секунд, ваш 2-секундный пинг проверки активности кажется разумным интервалом.
Это действительно увеличит использование полосы пропускания.Учитывая ваш вариант использования и то, как работает платформа, я не вижу другого способа реализовать это.