2016-09-18 3 views
1

クライアントコードがadded callback mechanismを使用してドキュメントの追加を監視しているとします。設計と完璧な条件で、ドキュメント1,2,3、... Nが追加された場合、クライアントコールバックはN回発射されるべきです。インターネット接続が一時的に失われたときのobserveChangesの動作は何ですか?

ここでネットワーク接続が失われたとします。クライアントがコールバックを追加した回数が保証されているかどうかは不変ですか?つまり、ネットワークの問題により、コールバックが論理的に「失われて」いる可能性があります。

答えて

0

優秀な質問!私はserversync packageと書いていたので、最近これを広範囲に実験していました。どのような私が見つけたことはこれです:

DDPピングのタイムアウトに達していない場合、すなわち、切断はごく簡単です:いつものように

     ビジネス、イベントは起こりません。クライアントからのデフォルトのDDP pingタイムアウトは30秒だと思います。

エルス

  1. 限り、あなたは、サーバー上のautopublishパッケージを使用しないでくださいとして、クライアントはは、再接続時に再びそのobserveChangesハンドラを起動しません。 に自動公開を使用すると、コレクションの各ドキュメントに対してaddedイベントが発生します。あなたはボンネットの下に、DDP はすなわち、それぞれにDDPは、コレクションの完全なコピーを送信し再接続し、それぞれの再接続時にクライアントにaddedメッセージを送信しないこと。知ることに興味があるかもしれません

  2. これは、自動公開を使用するかどうかにかかわらず発生します。しかし、クライアントはすでにこれらの文書のどれを知っているか知るほどスマートであると思われるので、彼がすでに持っている文書に対して実際のobserveChangesイベントを起動せず、新しいもの、変更したもの、削除したものだけを起動します。多くの切断が予想される場合は、特に大規模なコレクションを公開する場合にネットワークトラフィックを大幅に増加させるため、DDPのこの動作は依然として関連している可能性があります。私は、これはdocs of onConnectionで次のノートの枝分かれであると信じて:

クライアントが(例えば、一時的にインターネット接続を失った後など)サーバーに再接続現在のところとき、それは毎回新しい接続を取得します。 onConnectionコールバックが再度呼び出され、新しい接続に新しい接続IDが設定されます。

将来、クライアントの再接続が完全に実装されると、クライアントからの再接続はサーバー上の同じ接続に再接続します。その接続に対してonConnectionコールバックは再び呼び出されず、接続は同じままです接続ID。

+0

本当に便利です! observeChangesの仕組みはネットワークの問題に耐えるように設計されているようですね。すなわち、リンクが機能するまで、コールバックは論理的に待ち行列に入れられる。これに対処するメテオの文書はありますか? –

関連する問題