-2

GmailUIとGmailのIMAP実装の両方と相互作用するChrome拡張機能に取り組んでいます。

私のアプリのバックエンドは、各ユーザーのすべての受信メールを監視し、関心のあるメッセージ/送信者が受信されるたびにDBを更新する必要があります。

「ユーザーが開始した」ポーリングを設定できます。このポーリングでは、アプリが読み込まれるたびにすべての新しいメッセージをスキャンしますが、ユーザーがブラウザーを使用している場合にのみアプリが最新であるため、欠点があります。常に最新の状態にしたいと思います...

オフハンドでは、次のようなすべてのユーザーの単純なサーバーポーリングを検討しました。

For x = 0 to All users
    Fetch ALL msg where UID > lastMessageID
        if msg.sender == something i care about
            UPDATE table...
<repeat>

また、次のようなIMAPIDLEの使用についても考えました。

For all users, establish imap idle call
    for any user whos imap idle returned
        if msg.sender == something i care about
            UPDATE table...

私が理解しようとしているのは、最低でも5〜10kのアカウントを監視する必要があるため、どちらがより適切に拡張されるかということです...

足りないものはありますか?多数のアカウントに対してこれを行う簡単な方法はありますか?

  • メッセージをスキャンしてテーブルを更新する以外は、メッセージを保存する必要はありません。
4

1 に答える 1

0

IDLEを実装することは、サーバーにも負荷をかけないため、より適切なオプションです。

すべての変更を監視するPolling責任がある場合。clientたとえば、メールが他のクライアント(Webインターフェイスやモバイルデバイスなど)から削除された場合、そのような状況を監視するには、ポーリングを実行するたびにメールボックス全体をスキャンする必要があります。

whereas

メールボックスの状態で発生する変更について、メールの移動、読み取り、削除の操作などを通知するIDLE責任がある場合。Serverまた、スケーラビリティはIDLEコマンドの問題ではありません。

于 2013-03-22T05:46:22.337 に答える