5

ソーシャル Web アプリのアイデアがあり、そのアイデアの一部は、ローカル ストレージからサーバー データベースにデータをプルすることです。この理由は、アイデアがあり、このソーシャル アプリの次のステータスにそれを載せたいとしますが、信号もワイヤレスもどこにもありません。アプリでステータスを書き出すと、ローカルストレージに保存され、電話をオンラインで接続できる場所に戻ったときに使用できます。

次に、オンラインにできる場所に到達すると、アプリは localstorage に変更があることを検出し、そこからプルしてサーバー データベースに保存します。

これはまったく可能ですか?もしそうなら、どのように実装しますか? もしそれがまったく不可能だとしても、将来的に可能性はあると思いますか?

これは非常に大きな議論になると思いますので、これについてのコメントと回答をお待ちしております。

4

2 に答える 2

3

はい、可能です。ローカル ストレージからデータを取得すると、データは他の Javascript 変数と同じように機能します。インターネット接続がないこと以外にサーバーへの送信を停止する制限はありません。

それをどのように実装しますか?

まず、接続ステータスを検出する必要があります。この質問を参照してください。そのため、ユーザーがステータスを更新しようとすると、接続がオンラインかどうかがチェックされ、オンラインでない場合はローカル ストレージに保存されます。

リンクされた質問のメソッドを使用して、接続が回復したことを検出し、その時点でローカル ストレージからデータをプルして経由でサーバーに送信し、ローカル ストレージをクリアして重複データが送信されないようにします。

于 2013-07-12T10:21:43.437 に答える
3

navigator.onLineJavascript を定期的にチェックインして、デバイスのオンライン ステータスを取得できます。その間、

  navigator.onLine == false 

デバイスがオフラインであることを安全に伝えます。

 navigator.onLine == true 

必ずしもインターネットにアクセスでき、リクエストを実行できるとは限りません。何らかのネットワークに接続されているだけです。

デバイスがオフラインではないと想定したら、localStorage からデータを POST する ajax リクエストを送信します (jQuery の $.ajax 関数を使用することをお勧めします)。

(localStorage.getItem('dataToPull'))

PHP スクリプトに変換し、それを MySQL データベースに挿入します。

その ajax リクエストが失敗し、PHP/MySQL エラーが発生していないことが確実な場合は、デバイスがネットワークに接続されていて、navigator.onLine が true であっても、インターネット接続がないと想定しても安全です。その後、エラー処理を実行できます。たとえば、5 分後にデバイスを再度ポーリングします。

于 2013-07-12T10:24:10.927 に答える