web-dev-qa-db-ja.com

Meteorアプリはどのようにオフラインで動作しますか?

これは次の場合に便利です。

  • サーバーがダウンしており、クライアントがリアルタイム同期のために接続できない
  • インターネット接続がありません
  • ユーザーはオンラインにしたくないが、アプリケーションで作業したい。
51
Aleksey Kulikov

はい!ほとんどの場合、これはすでにMeteorに実装されています。

サーバーへの接続が失われた場合でも、クライアントはローカルで機能できます。データベースの書き込みはクライアント上で成功したように見え、画面に即座に反映されます。接続が再確立されると、Meteorはすべての保留中のメソッドリクエストをサーバーに再送信し、サーバーからの結果でクライアント表示を更新します。これはすべて遅延補正の結果であり、オフラインであることはサーバーが非常に遅いように扱われます。

クライアントは、リアクティブ「Meteor.status()」出力を監視して、現在の接続のステータスを確認できます。たとえば、Meteor.statusを使用して、Gmailなどの再接続タイマーと「今すぐ接続」ボタンでポップアップを駆動できます。

編集:もちろん、Meteorは魔法ではありません。オフライン中に「リロード」を押すか、ページから移動するなどすると、Meteorセッションが失われ、ネットワークを回復するまで再開できなくなります。ただし、これはオフラインモードを使用するすべてのWebアプリに当てはまるため、アプリのユーザーを驚かせることはありません。

54
n1mmy

「タブが閉じた場合、またはリロードした場合」の問題を解決できるオプションがいくつかあります。私はまだ試していませんが、面白そうです。

https://github.com/awwx/meteor-offline-data

流星オフラインデータ

Meteor.Collectionをラップする「オフラインコレクション」を実装するMeteorオフラインデータプロジェクトのホーム:

サーバーからのデータはブラウザデータベースに永続的に保存されるため、アプリケーションがオフラインで起動した場合でも、アプリケーションで使用できます。

ユーザーが行った変更もブラウザーデータベースに保存され、ブラウザーを閉じて再度開いた場合に保持されます。次回アプリケーションがオンラインになったときに、変更がサーバーに送信されます。

更新は、オフライン中でも、同じアプリケーションで開いているブラウザーウィンドウ間で事後的に共有されます。

および https://github.com/GroundMeteor/Meteor-GroundDB

特徴:

軽いフットプリント

幅広いブラウザのサポートChrome、Safari、Firefox、Internet Explorer 9ローカルストレージがない場合の通常のMeteor.Collectionへのフォールバックコレクションの変更の再開メソッドの再開クロスウィンドウタブのオフライン更新SmartCollectionのサポートオフラインクライアント側のみのデータベースのサポートEJSON.minifyを使用localstorageのデータを圧縮するためのEJSON.maxify将来的には、サーバー側にカスタマイズ可能な競合ハンドラーが存在します

12
russellfeeed

行の下部:

1)ブラウザーは実際のセッションを完全に保存できます(どのくらいの時間ですか?変更があったためにアプリが要求するたびに。そのようなアプリでは、10秒ごとでは不十分で、すべてのイベントが必要です)。 Firefoxでプログラミングできますか? (ただし、すべてを保存する必要があります(HTML、JS、MinoMongoDBなど、1回の変更のみ!)

2)または、ローカルのもの(独自のローカルアプリ)を処理するクライアント側のフルメテオスタックがありますが、何らかの方法でCRUD操作を別のタブまたはブラウザーのインスタンスの別のオンラインアプリに通信します。 (その2番目のアプリは実際のリモートサーバーによって提供されます)問題は、そのような2つのアプリが通信できるかどうかです。ブラウザはセキュリティ上の理由でそれを禁止すると思われます)

別のより創造的なアイデアは次のとおりです。クライアントのスタックでoplogをアクティブにします。次に、すべてのバックオンラインで、常にオンラインのときに、実際のクライアントのoplogをメインアプリ(別のoplogログ)でエクスポート/インポートできます。

3)クライアントの流星フルスタックからサーバー上の別の流星スタックにcall()要求を送信できない場合。 (それは可能ですか?meteorのURLドメイン制限に関するいくつかのルールはありますか)

しかし、それはタブレット上に完全な流星スタックを持っている可能性を修正しません(私はそのようなことが可能だとは知りません)

0
EMHmark7