2014-10-10 2 views
1

Я строю установку, которая будет работать в течение нескольких дней и должна получать уведомления из почтового ящика GMail в режиме реального времени. API Gmail отлично подходит для многих функций, которые мне нужны, поэтому я хотел бы использовать его. Однако он не имеет команды IDLE, такой как IMAP.Длинный опрос с GMail API

Прямо сейчас я создал реализацию API GMail, которая каждые пару секунд опросает почтовый ящик. Это отлично работает, но время от времени (я получаю «сброс соединения сверстником»). Итак, разумно ли отключать sesson и перезапускать его каждые полчаса или около того, чтобы поддерживать его (например, с IDLE)? Это ужасный, ужасный хак, который заставит google разрушить мою дверь посреди ночи?

Будет ли правильным решением войти в систему с IMAP, а также использовать IDLE для уведомления моего модуля API GMail, чтобы запустить и вносить изменения, когда они возникают? Или я должен просто сосать его и создать только IMAP-реализацию?

ответ

3

Обязательно рекомендуется против IMAP, обратите внимание, что даже с помощью команды IMAP IDLE это не в реальном времени - это просто опрос каждые несколько секунд (5?) Под крышками, а затем выталкивание в соединение. (Проведите эксперимент самостоятельно и посмотрите задержку там.)

Часто задавать запрос history.list() часто довольно дешево и должно быть хорошо. Если это для значительного числа пользователей, вы можете немного оптимизировать, например, интеллектуальное отключение для неактивных почтовых ящиков (например, каждый раз, когда нет отсрочки обновлений дополнительными 5 с до максимума, как через минуту или две)?

Google, безусловно, не разрушит вашу дверь или, скорее всего, не заметит, если вы делаете это каждую секунду с пользователями 1M. :)

Настоящие push-уведомления для API - это, безусловно, то, что требуется.

+0

Отлично! Это именно то, что я делаю! Мне очень интересно услышать, что IDLE тоже не настоящий толчок. Похоже, что опция «connection reset by peer» может быть просто запущена на компьютере. Требуется больше испытаний. – mysteryDate

+0

Любопытно, мне нужно разбивать/перестраивать монитор каждые несколько минут, например, в IMAP IDLE? Есть ли причина? – mysteryDate

+0

Не знаете, что вы подразумеваете под этим, вы можете уточнить/повторить? –

0

Вы получаете перезагрузку соединения, поскольку вы превысили квоту Google. Каждый запрос API GMail имеет квоту, определенную here.

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