我正在使用Chrome扩展程序,该扩展程序可与Gmail用户界面以及Gmail的IMAP实施进行互动。
我的应用程序的后端需要监控每个用户的所有传入电子邮件,并在收到感兴趣的邮件/发件人时更新数据库。
我可以设置一个“用户启动的”投票,我会在他们加载我的应用时扫描所有新消息,但是有回退,因为我的应用程序只是当用户在浏览器中时是最新的。我想随时更新......
副手我考虑过对每个用户进行简单的服务器调查,例如:
For x = 0 to All users
Fetch ALL msg where UID > lastMessageID
if msg.sender == something i care about
UPDATE table...
<repeat>
我还考虑过使用IMAP IDLE,如:
For all users, establish imap idle call
for any user whos imap idle returned
if msg.sender == something i care about
UPDATE table...
我想弄清楚的是哪个会更好地扩展,因为我需要监控最少5-10k的帐户......
有什么我想念的吗?是否有更简单的方法为大量帐户执行此操作?
答案 0 :(得分:0)
实现IDLE是一个更好的选择,因为它也不会给服务器带来负担。
如果Polling
client
负责监控每项更改。例如,如果从某个其他客户端(如Web界面或某些移动设备)删除邮件,那么为了监控此类情况,您每次轮询时都必须扫描整个邮箱。
whereas
如果IDLE
Server
,{{1}}负责让您了解邮箱状态中发生的任何更改,无论是邮件移动,读取还是删除操作。
IDLE命令也不应该是可伸缩性问题。