Can someone explain to me how IMAP IDLE works? Does it fork a new process for each connection that it opens? Can I somehow use eventmachine with it?
I am trying to
IMAP IDLE is a feature that mail server implementations can support which allows real-time notifications. [Wikipedia]
The IDLE command may be used with any IMAP4 server implementation that returns "IDLE" as one of the supported capabilities to the CAPABILITY command.
The IDLE command is sent from the client to the server when the client is ready to accept unsolicited mailbox update messages. The server requests a response to the IDLE command using the continuation ("+") response. The IDLE command remains active until the client responds to the continuation, and as long as an IDLE command is active, the server is now free to send untagged EXISTS, EXPUNGE, and other messages at any time.
The IDLE command is terminated by the receipt of a "DONE" continuation from the client; such response satisfies the server's continuation request. [...] The client MUST NOT send a command while the server is waiting for the DONE, since the server will not be able to distinguish a command from a continuation.
[RFC 2177 - IMAP4 IDLE command]