Нам необходимо использовать общую структуру данных для внутреннего сервера, веб-клиентов, собственных приложений iOS и собственных приложений Android.Внутренний сервер написан на NodeJS и использует базу данных Postgres.
Я рассмотрел базу данных Firebase в реальном времени, так как она решит все требования в том смысле, что бэкэнд мог записывать в базу данных Firebase и все клиенты могли использовать базу данных.
Мой вопрос: есть ли альтернатива с открытым исходным кодом, которая будет работать «из коробки» и будет соответствовать нашим требованиям более точно, чем полнофункциональная база данных Firebase в реальном времени, которая предложит множество функций, которые нам не нужны или не нужны,
--- Вот предположения и требования ----
Базовая программа служит главной, поэтому изменения в структуре данных могут выполняться только внутренней службой.,
Можно предположить, что структура данных представляет собой простой список пар ключ-значение, простой массив объектов или полноценную древовидную структуру, подобную объекту json.Мы можем работать со всеми решениями.
Структура данных будет очень ограниченной по размеру, скажем, менее 100 КБ.
Любое обновление структуры данных на сервере должно распространяться на всех клиентов, подписавшихся на структуру данных, почти в реальном времени.
Если клиент находится в автономном режиме в течение определенного периода времени, он должен обновляться сразу после подключения.
Каждый тип клиента должен иметь надежный способ подписки на изменения в структуре данных.Следовательно, как только локальная версия структуры данных обновляется, в то же время она должна быть уведомлена о том, что изменилось.
Если возможно, клиенты, получив уведомление об обновлении структуры данных, должны знать, какая "часть структуры данных" была обновлена.
Мы хотим написать как можно меньше кода и предпочитаем решение, которое имеет серверную библиотеку для NodeJS и клиентские библиотеки для веб, родной iOS и родной Android.
Собственные приложения не могут запрашивать разрешения для push-уведомлений.
Он должен работать в любом современном браузере, поддерживающем веб-сокеты или подобное.