2015-05-26 4 views
0

У меня есть сервер, которому необходимо получать обновления в реальном времени от Firebase, для нескольких пользователей, где каждый пользователь предоставляет Oauth доступ к своим данным Firebase в мое приложение.Firebase REST потоковая передача для нескольких пользователей

Мой сервер реализован с использованием Firebase REST Streaming, основанный на событиях, отправленных сервером.

Мне нужно знать, есть ли способ мультиплексировать данные Firebase, относящиеся к нескольким пользователям в одном потоке.

Я хотел бы иметь возможность настроить поток с помощью токенов Oauth, относящихся к нескольким пользователям, и впоследствии получать обновления в реальном времени, относящиеся к нескольким пользователям в одном потоке.

В противном случае мне кажется, что мне нужно поддерживать отдельный поток на токен Oauth, который кажется немасштабируемым.

Я думаю, что у Твиттера есть функция Site Streams, как то, что я ищу в их API, реализованный через конверт, который указывает на то, к чему предназначено сообщение.

Поддерживает ли Firebase что-либо подобное?

ответ

2

Один вызов REST Firebase будет контролировать только один узел. Например.

curl 'https://samplechat.firebaseio-demo.com/users/jack/name.json' 

Вы можете контролировать то, что данные возвращаются из-под этим узлом с orderBy, startAt, EnDAT and limitTo ... `параметрами. Например.

curl 'https://samplechat.firebaseio-demo.com/users/.json?orderBy="name"&startAt="Jack"' 

Невозможно, чтобы один запрос REST возвращал данные из разных узлов/узлов. Поэтому, если вы не найдете способ собрать все данные, которые хотите вернуть в одном узле, где он может быть возвращен одним набором параметров запроса (orderBy и т. Д.), Вам придется выполнить несколько запросов REST для получения ваших данных.

Обратите внимание, что SDK, которые Firebase обеспечивает внутренне, использует протокол веб-сокета, поэтому на это не влияет. Если SDK доступен для вашего серверного языка (например, node.js, Java), вы можете решить его, используя этот.

+1

Спасибо. Я начал с использования SDK node.js на моем сервере. Тем не менее, меня поразило ограничение, описанное в [link] (http://stackoverflow.com/questions/28242306/how-to-use-firebase-client-to-connect-to-nest-api-using-multiple -client-connecti) .Описанное там решение (использовать недокументированный второй параметр для конструктора Firebase, который инструктирует экземпляр для настройки и поддержки нового TCP-соединения, а не совместного использования) работает, ОЧЕНЬ, что я ищу заключается в совместном использовании TCP-соединения, а не в создании нового для каждого пользователя. Это можно сделать? –

+2

* [Отказ от ответственности: я работаю для Firebase] * Сервер Firebase в настоящее время требует отдельного подключения для каждого контекста/токена. Вы ничего не можете сделать на стороне клиента, чтобы изменить это. Там может быть библиотека для многопроцессорных соединений, но в любом случае * что-то * должно поддерживать открытый сокет для каждого контекста. Если он недостаточно масштабируется для ваших потребностей на стороне клиента, вам придется взглянуть на другой подход. –

+1

Итак, это означает, что, например, API Works with Nest, основанный на Firebase, по своей сути не масштабируется. Я имею в виду, что если мое приложение обслуживает 1 миллион подписчиков Oauth'd Nest, то моему серверу необходимо сохранить 1 миллион подключений с Firebase. Я что-то упускаю? Если это так, то я не понимаю, почему Nest основывал свой API на Firebase. У Firebase есть планы решить эту проблему и предоставить какие-то мультиплексированные соединения? Я бы предположил, что любое приложение на стороне сервера, интегрирующееся с Firebase, сталкивается с этим ограничением. –

Смежные вопросы