我正在构建一个可以运行几天并且需要实时从GMail收件箱收到通知的安装。 Gmail API非常适合我需要的许多功能,所以我想使用它。但是,它没有像IMAP那样的IDLE命令。
现在我已经创建了一个GMail API实现,每隔几秒轮询一次邮箱。这种方法效果很好,但过了一段时间就会超时(我得到#34;连接由同行重置#34;)。因此,关闭sesson并每半小时左右重启一次以保持活动(如IDLE)是否合理?这是一个可怕的,可怕的黑客攻击,谷歌会在半夜打破我的门吗?
正确的解决方案是使用IMAP登录并使用IDLE通知我的GMail API模块启动并在发生变化时进行更改吗?或者我应该把它搞砸并创建一个仅IMAP实现?
答案 0 :(得分:3)
肯定会建议不要使用IMAP,请注意,即使使用IMAP IDLE命令也不是实时 - 它只是在封面下每隔几(5?)秒轮询一次,然后推送到连接。 (试验自己,看看那里的延迟。)
查询history.list()经常非常便宜,应该没问题。如果这是针对相当多的用户,您可能需要进行一些优化,例如对非活动邮箱进行智能退避(例如,每次没有更新后退额外5秒到最大值,如一分钟或两分钟)?
除非你每两秒钟与1M用户一起做,否则谷歌肯定不会破坏你的门,甚至可能不会注意到。 :)API的真实推送通知肯定是需要的。
答案 1 :(得分:0)
您正在通过对等方重置连接,因为您超出了Google配额。每个GMail API请求都定义了here。