2015-03-17 2 views
2

Я только начал работу с Firebase и задал вопрос о гарантиях Firebase Event, перечисленных по следующему URL-адресу: Event Guarantees.Firebase Event Guarantee: Event Order

Одна из гарантий гласит, что записи с одного клиента всегда будут записываться на сервер и транслироваться другим пользователям в порядке.

Эта гарантия также подразумевает, что клиенты будут получать события, транслируемые одним клиентом, в том порядке, в котором они были переданы, или можно получать события вне порядка их передачи?

Например, если один клиент добавляет узел, то добавляет его к этому узлу, я уверен, что другие клиенты будут видеть эти события в одном порядке?

+0

Единственная гарантия заключается в том, что значения будут в конечном итоге согласованы. Размышляя об этом, это единственный разумный ответ. Любая операция через Интернет может быть отложена на неопределенный срок любой движущейся частью процесса, таким образом создавая непредвиденные события, полученные клиентом, независимо от того, какой заказ они достигли на сервере. – Kato

ответ

3

Единственная гарантия заключается в том, что значения будут в конечном итоге согласованы. Размышляя об этом, это единственный разумный ответ. Любая операция через Интернет может быть отложена на неопределенный срок любой движущейся частью процесса, таким образом создавая непредвиденные события, полученные клиентом, независимо от того, какой заказ они достигли на сервере.

Таким образом, вам гарантировано, что все клиенты в конечном итоге увидят оба добавленных дочерних узла и что они будут согласованы для всех клиентов (в конечном итоге).

Если вы хотите гарантировать порядок событий, вы используете очередь сообщений, которая является одним из вариантов адаптации Firebase, но не единственного. Это легко достигается с помощью push() method, который создает хронологически упорядоченные уникальные идентификаторы.

Вы также можете указать временную метку и использовать метод orderByChild для сортировки записей.

+0

Като, когда вы говорите, что данные будут согласованы _across для всех клиентов (в конечном итоге) _, вы имеете в виду, что если клиент получает событие не в порядке, то следующее событие, которое они получают, будет по крайней мере отражать последнее состояние? Или вы говорите, что из n событий, последнее событие гарантированно будет последним состоянием? – gorillapower

+0

См. Страницу событий, связанную с OP. Это авторитетно. Последним событием будет последнее состояние (здесь ничего не имеет смысла, кстати). – Kato

+0

Спасибо за ответ. Я читал события и другие источники страниц, но я просто хотел быть ясным. Чтобы сделать мой вопрос более ясным, если у моего клиента заканчивается несогласованное состояние данных (т. Е. Событие никогда не было получено), единственный способ для состояния стать последовательным снова для другого события? – gorillapower