Защита от пропущенных сообщений в AppEngine Channel API - PullRequest
2 голосов
/ 19 декабря 2011

В API канала AppEngine каналы автоматически закрываются через 2 часа.Мы решаем эту проблему, присоединяясь к каналу в событии onError.

Есть ли вероятность, что сообщения могут быть пропущены, если они отправляются во время повторного подключения канала?

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

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Немного предыстории: «идентификатор клиента» в Channel API используется для создания временной конечной точки XMPP.Заданный идентификатор клиента всегда будет отображаться на одну и ту же временную конечную точку.Поэтому при повторном подключении с помощью токена к каналу, созданному с тем же идентификатором клиента, вы повторно подключаетесь к той же конечной точке.Из-за этого вы можете увидеть поведение, когда ваш клиент получает сообщения, отправленные до воссоздания канала.Но нет никаких гарантий, и мы активно не ставим в очередь сообщения, когда они отправляются на канал без прослушивающих клиентов.

В вашем случае, вы могли бы вернуть обновленный список встреч как частьтого же ответа, который возвращает новый токен?

0 голосов
/ 19 декабря 2011

Вы не «переподключаете» канал, вы создаете совершенно новый - так что да, сообщения могут быть пропущены.Однако вы должны получить исключение, если попытаетесь отправить сообщение на закрытый канал.

...