IMAP 的 IDLE(RFC 2177)如何实现“新邮件实时推送”而不必轮询?
1
IMAP 的 IDLE(RFC 2177)如何实现“新邮件实时推送”而不必轮询?
▼
问题
早期客户端只能定时轮询(NOOP/POLL)查新信,既耗电又延迟高;RFC 2177 的 IDLE 让服务器在“有事件时主动通知”客户端。
机制
客户端发 IDLE 进入阻塞等待,服务器在邮箱有变化(新信到达、标记变更)时发无编号响应(EXISTS 等)通知;客户端处理完发 DONE 退出 IDLE 再重新进入,形成长连接推送。
价值
近实时收信、省电省流量;是 Push 邮件的基础(移动端“新邮件提醒”多基于此)。
实践
邮件系统须支持 IDLE(与 keepalive 配合防断连);移动客户端优先走 IDLE/推送而非短轮询以提升体验。
参考:RFC 2177(IMAP4 IDLE 非阻塞通知);RFC 3501(IMAP 基础)
