APP開発——ページをまたぐ通信

1769 ワード

オプション
  • Dcloudは彼らの下のパッケージにwebview上にevalJSを封入した方法をスパン通信の方式として提供しています.原理はjavascriptコードを送信して指定のwebviewで実行します.その方法の名前を見ると、この方法はJavascriptのeval方法と似ています.文字列をパラメータとして、evalメソッドに伝えて、javascriptコードとして実行します.
  • //    
    plus.webview.getLaunchWebview().evalJS("alert('    !')")
    
    アプリの開発にはリアルタイム通信が必要な四つのシーンがあります.リアルタイム通信が確実にできるように、indexページでwebsocket接続を開始する必要があります.(これはプログラムの入口ページです.プログラムからプログラムのクローズまでは必ず存在します.だから、websocketをこのページに接続して開始します.ユーザがリアルタイムでサーバからのプッシュ情報を受信できるように保証できます.)しかし、サービスが送ってきた情報は保証できません.evalJSをリアルタイムで通過する方法で、ターゲットページに情報を伝達することができます.(ユーザーはそのページを開けていないかもしれません.ソフトウェアの流れを保証するために、プログラムは自動的に多すぎるページを開けません.)
    上記の通り、DcloudのevalJSの方法は私が1.1バージョンからwebsocketを導入してから、徐々に使用を諦めていますが、昨年に先生(@cc先生)が意図的にクロスページ通信を勉強するように指導してくれました.その時学んだhtml 5 storgeはこのような場面に適していました.
  • HTML 5onstorageイベントは、1ページでStrageを修正すると、他のページがトリガonstorageイベントとなり、対象ページが開いていない場合はサーバ側の修正により、ローカルにキャッシュされます.ターゲットページが開いたときには最新のキャッシュ情報がリアルタイムに入手できます.
  • //  storage         
    window.addEventListener("storage",function(e){
        //e.key       ,key        storage   key ;
        if(e.key=="userData"){
            indexData.userData = JSON.parse(localStorage.getItem("userData"));
        }
    })
    
    後記
    対照的に、データ処理においては、httml 5 storgeがonstorgeイベントと結合することはevalJSの使用に対してより便利であり、W 3 C仕様の中に属しており、この方法の汎用性がより強く、DcloudのevalJSイベントは、複数ページAPPにおいて、ページを跨るUI切り替え、例えば親子ウィンドウの通信を行うことにより適している.の通信と同じです
    2016-7-27更新
    appは最終的には、共通の方法を抽出し、evalJSを使用して実現したクロスページ通信によって、データ交流はまだ使われているStrageですが、データ量が多いため、onStrageイベントをトリガできないので、前述のon Strageイベントを放棄してページデータの更新をトリガしました.onStorrageイベントが無効になったデータ量の臨界値は見つけられませんでした.Appは開発されませんでした.現在のソフトウェア初期化後のloacl Storrageの使用量は10個ぐらいで、removeの時だけonstorageイベントが発生します.setItemの時は大確率でonStorrageイベントが発生しません.