У меня есть приложение, написанное на Golang, размещенное на Google App Engine и использующее Firestore в качестве серверной части.
Google App Engine масштабируется по горизонтали.
Я использую серверную часть Firebase для отправки сообщения веб-сокета. Поэтому не имеет значения, к какому экземпляру App Engine подключен пользователь.
Каждый раз, когда пользователь проходит аутентификацию, создается веб-сокет и становится доступен список онлайн-пользователей.
В Firestore, Я просто помечаю этого пользователя как «Активный», когда его сокет подключен, и как «Неактивный», когда он отключен.
Моя проблема в том, что приложение вылетает (это случается, даже если этого не произошло, я необходимо спланировать это.) все пользователи, которые были подключены к Go серверу через веб-сокет, по-прежнему помечены как активные.
Веб-клиенты не подключены к Firebase. Только на сервер Go.
Я не могу отметить всех пользователей как неактивных при запуске приложения. Поскольку несколько приложений могут запускаться из-за загрузки большего количества экземпляров App Engine. Если бы я сделал это, пользователи, которые находятся в сети, были бы помечены как отключенные при загрузке нового экземпляра из-за нагрузки.
Как можно обойти такие проблемы?