[#50558] IMAP IDLE — emo@...

DOCOMO =E3=81=AE=E3=82=AD=E3=83=A3=E3=83=AA=E3=82=A2=E3=83=A1=E3=83=BC=E3=

14 messages 2017/08/21

[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

In This Thread