我有一堆代码执行IMAP命令“搜索,空闲,完成,搜索,空闲,完成,搜索......”。
有些消息是否可能在搜索和空闲命令之间到达,因此,只有在空闲返回/超时后才会被该代码接收?
EDIT1:我尝试使用GMail:在消息处理和IDLE之间使用sleep 60进行测试,即使有消息,IDLE也没有在超时之前返回;为了确保我没有错过来自IDLE的事件,我做了一个客户端发送/ recv转储并在sleep()之后发送IDLE之前尝试了一个额外的read();在睡眠期间发送测试消息()。
EDIT2:使用两个连接,一个用于获取邮件(使用' SEARCH'),另一个用于使用IDLE获取即时消息'有新消息'事件,避免竞争条件,但someone声称存在一些问题。
答案 0 :(得分:1)
正确实现的服务器会在您启动IDLE
后立即通知您新消息,如果它尚未通知您有关其他命令的响应。