У меня есть приложение, которое состоит из приложений внешнего интерфейса и внутреннего интерфейса, которые взаимодействуют с использованием RTDB Firebase. Поскольку для языка, который мы используем в бэкэнде, реализации SDK нет, мы используем REST api. Мы используем много подписок на вложенную структуру, например /chats/{user_id}/{message_id}
. Проблема в том, что мне нужно обрабатывать каждое сообщение только один раз, но я не могу создать индекс на вложенном узле, поэтому невозможно, например, добавить в сообщение атрибут processed
, а затем использовать запрос, чтобы подписаться только на необработанные сообщения. ,
Другая часть проблемы заключается в том, что когда требуется перезапуск соединения, вся структура chats
загружается снова. Когда я отлаживал nodejs
sdk, я заметил, что он действительно использует websocket и отправляет какой-то токен подписки при повторном подключении, и данные не загружаются повторно, но websocket не документирован для RTDB. Поэтому я хотел бы знать, если у кого-то была такая проблема и есть ли решение без изменения структуры или языка для бэкэнда (может быть, есть какой-то недокументированный заголовок, который я могу использовать ??)
Я также думал о поискеспособ продления срока действия токена учетной записи службы (я подозреваю, что истечение срока действия токена является причиной того, что время ожидания подписки и перезапускается каждый час, я использую время ожидания 2 минуты для keepalive). Но это было бы только временным решением.