2016-11-20 2 views
0

Я только что построил свое первое приложение. Это приложение групповых сообщений, для которого я использовал базу данных Firebase Realtime. Я последовал за this учебником по созданию моего приложения.Как экземпляры базы данных Firebase извлекают данные в реальном времени?

Чат работает безупречно и в реальном времени, т.е. любые изменения в базе данных извлекаются и отражаются в течение нескольких секунд в моем приложении. На самом деле, будучи немного любопытным, я не просто копировал все эти строки кода, а пытаюсь понять смысл каждого утверждения. Итак, я смущен одним из моих сомнений:

Как это работает в реальном времени (чаты появляются сразу)? Я читал о Firebase Database here, и они упоминают, что ValueEventListener используется для обновления данных приложения в реальном времени, но что здесь используется?

+1

Публикация подписки - ваше приложение ждет обновлений, Firebase уведомляет устройство о подключении к сети при возникновении обновлений. –

+1

Также стоит упомянуть: Firebebase Database (как frontend, так и backend) использует [WebSockets] (https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API), что и позволяет клиенту подписаться на изменения в сервере по сети. – ArneHugo

+0

Отличные комментарии от вас обоих. Кто хочет превратить это в ответ? –

ответ

1

От documentation:

в реальном времени: Вместо типичных запросов HTTP, базы данных в реальном масштабе времени Firebase использует синхронизацию данных, каждые данные изменения времени, любое подключенное устройство получает это обновление в течение миллисекунд.

По сетевому пути это достигается с помощью WebSockets, который используется как на сервере, так и на стороне клиента Firebase.

Кроме того, «API базы данных реального времени предназначен только для того, чтобы выполнять операции, которые могут выполняться быстро».

Edit: Клиентская библиотека Firebase устанавливает один WebSocket для связи с базой данных в реальном времени, который используется для всех коммуникаций с базой данных в реальном времени, как чтение/подписываться и обновление/толкая (если вы не используете REST API) ,

Edit 2: В the tutorial you did вы использовали FirebaseListAdapter, который абстрагирует, как выполняется синхронизация данных. Это четвертый параметр - ссылка на базу данных базы данных Realtime Firebase, которая будет синхронизироваться с (используя WebSocktes) и заполнить список для вас. Он берет каждую запись синхронизированных данных и помещает их в новые объекты Java класса модели, которые вы предоставляете в качестве второго аргумента, а именно ChatMessage.class.

+0

Спасибо, @ArneHugo. Если библиотека FirebaseDatabse включает в себя синхронизацию, то почему «ValueEventListener» используется в собственном блоге Firebase (Android Setup в вашей документации)? Просто любопытно, чтобы очистить понятия. – Baahubali

+0

«ValueEventListener» - это просто объект Java, который отвечает за получение обновлений («DataSnapshots») через. это метод [onDataChanged] (https://firebase.google.com/docs/reference/android/com/google/firebase/database/ValueEventListener.html#onDataChange (com.google.firebase.database.DataSnapshot)). – ArneHugo

+0

Хорошо. Однако мой запрос заключается в том, почему документ firebase включил его, когда сами библиотеки firebase включают возможности синхронизации? Надеюсь, ты сейчас задал мне вопрос. – Baahubali

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