我有一大堆执行IMAP命令的代码,“search,idle,done,search,idle,done,search,...”。
有没有可能一些消息在搜索和空闲命令之间到达,因此,只有在空闲返回/超时之后才会被该代码接收?
EDIT1:我尝试使用GMail:在消息处理和空闲之间使用睡眠60进行测试,即使有消息,在超时之前IDLE也没有返回;为了确保我不会错过来自IDLE的事件,我做了一个客户端发送/接收转储,并在发送IDLE之前尝试了一个额外的read(),在发送睡眠()之后发送测试消息。
EDIT2:使用两个连接,一个用于获取邮件(使用“搜索”),另一个用于使用空闲获取即时“有新消息”事件,避免了竞争条件,但someone声称这有一些问题。
发布于 2014-12-29 23:51:15
正确实现的服务器会在您启动IDLE时立即通知您新消息,前提是它尚未响应其他命令通知您这些新消息。
https://stackoverflow.com/questions/27690838
复制相似问题