[ruby-list:50559] Re: IMAP IDLE
From:
とみたまさひろ <tommy@...>
Date:
2017-08-22 05:30:24 UTC
List:
ruby-list #50559
On Tue, 22 Aug 2017 07:37:20 +0900
emo@nifs.ac.jp wrote:
> インターネット上のブログ等の情報によると、
> DOCOMO のメールで IMAP の IDLE を使って
> プッシュ送信を実現しているという様な記事
> があったので、下記のようなプログラムを書いた
> のですが、Net::IMAP#idle を実行した時点で
> 接続が切れてしまうようなのですが、
> どのようにすれば良いのでしょうか?
IDLE発行後、数分経過後に切断されるんであれば、そういうサーバーの実装もありえます。
その場合は、IMAPクライアントとしては、サーバーから切断される前にIDLEを終わらせて、またIDLEを発行するようにすればいいと思います。
Ruby の Net::IMAP の場合は idle メソッドに引数でタイムアウト値を与えることができます。
# 日本語のマニュアルには書かれてないようですが。
IDLE発行後すぐに切断されているようならDOCOMOのIMAPサーバーがIDLEにちゃんと対応していないのかもしれません。
手でIMAPコマンドを叩いて確かめてみるのもいいと思います。
自分はDOCOMOの契約がないので試せません。
% openssl s_client -connect imap.spmode.ne.jp:993
a LOGIN ユーザ名 パスワード
a SELECT INBOX
a IDLE
ここで待ち状態になるはず。抜けるには DONE
a LOGOUT
--
とみたまさひろ <tommy@tmtm.org>
http://twitter.com/tmtms
D68F 8F55 7F6C 5908 88EB 1EBA 25ED DEE7 BBE8 1752