Phonegap Androidプラットフォームのwebsocketサポートを追加し、デフォルトをsocketにします.io優先チャネル選択

5430 ワード

Phonegap Androidプラットフォームのwebsocketサポートを追加し、デフォルトをsocketにします。io優先チャネル選択


広く知らせる


SOcketを使用ioはブラウザプラットフォームにまたがるリアルタイムプッシュの第一選択として、テストされた各主流ブラウザでのテストは確かに良好なリアルタイム表現を持っている.ここではsocketio-nettyサーバ側を普及させるために、次の広告を行い、同時に予熱します.
socketio-netty:もう一つのsocket.ioサーバ側実現、0.9-1.0バージョン対応~
 

模範目的.


 
IE 6+、Firefox、Chrome、Safari、Operar、IOS、Androidなどが正常に動作し、具体的な環境に応じて最適な通信チャネルを自動的に選択できるように、市販のブラウザで正常に動作する集団チャットアプリケーションを構築します.
ええ、ブラウザにまたがるプラットフォームである以上、自然にsocketを選びます.io(クライアントjs)になりました.これも本稿の重心であり,本稿の最終はsocket.io(クライアントjs)バージョンは、PhonegapパッケージのAndroid ApkプログラムでWebsocketプロトコルを使用して、迅速なデータ交換の目的を達成し、交換性能を向上させることができます.
同時に、私たちの模範的な応用ができるだけ1回作成され、あちこちで実行されることを保証します.
まあ、socket.io(クライアントjs)+socketio-netty(socket.ioサーバ側JAVA実装)+Phonegapは、非常にインタラクティブなブラウザ間、モバイル間アプリケーション間のHTMLアプリケーションを構築するのに良い選択です.
また、本明細書の例示的な項目は、その機能を示すだけで、スタイルを保証しない.
 

Phonegap


公式サイト
公式サイトは次のように定義されています.
PhoneGap is an HTML5 app platform that allows you to author native applications with web technologies and get access to APIs and app stores.
日语翻译:
PhoneGapは、HTML、CSS、JavaScriptを使用してプラットフォーム間でモバイルアプリケーションを構築するオープンソースの開発フレームワークです.
HTML+CSS+Javascriptを使用してプラットフォーム間でのモバイルリファレンスを構築できるのは、確かにいいですね.お勧めします.
クラウド構築サービス(https://build.phonegap.com/apps)、本機はアプリケーションを作成した後(トップページがindex.htmlであることを保証し、関連するcss/jsが一緒に保存されている)、zipにパッケージ化し、アップロードし、自動的に異なるプラットフォームの下の配置パッケージを自動的に構築し、非常に便利である.
表面的にはすべて完璧だが、Androidシステムに配備された後、socket.ioはwebsocket双方向のチャネルを使用できません.socket.ioのデフォルトではxhr-long polling通信モードが採用されています.仕方がない.
リアルタイムインタラクションデータ量が大きい場合,xhr−long polling,jsonp polling,Websocket/flashsocketに比べて超えられない速度優位性を有し,同時に双方向データ伝送チャネルを観察することで明らかに感じることができる.

 


の原因となる

  • 私のandroidシステムは2.3で、そのオリジナルのブラウザはwebsocket通信プロトコル(ucweb、qq、opear miniなど)をサポートしていません.
  • Phonegap変換APKパッケージは、android内蔵ブラウザを呼び出すため、websocketが使用できなくなります.
  • Android 2/3を調査した.*ネイティブブラウザはwebsocketをサポートしていません.Android 4.*については、テストしたことがありません.

  • html 5に対するブラウザのサポート状況を確認する方法、ブラウザアクセスhttp://html5test.comHTML 5のサポート状況や走分などを調べることができます.
    はい、Phonegapは2.0バージョン以降、Androidのwebsocketサポートを追加すると噂されていますが、現在のバージョンは1.7です.

     


    解決策


    animesh kumarが開発したwebsocket-android-phonegapプロジェクトは、Phonegapにwebsocketクライアントプロトコルをサポートさせ、java nioを使用してwebsocketクライアントプロトコル接続を作成するとともに、Phonegapはカスタムコンポーネントをサポートし、JSとJAVAコードの相互呼び出しオープンアーキテクチャをサポートすることで、偽装のwebsscoketを促進した.js.
    DWRの味がしますが、もっと柔軟です.
    もう一つ単純なsocket.io androidクライアント実装:

    https://github.com/koush/android-websockets#readme


    興味のある方は、参考にしてみてください.
    Nettyを使用してwebsocketクライアントを構築し、jsなどを結合するつもりだったが、オープンソース実装があり、ドアを閉めて車を作らない.
  • EclipseでAndroid Projectプロジェクトchatdemo
  • を新規作成
  • animesh kumarのwebsocket-android-phonegapプロジェクトjavaファイルをphonegap-websocket-supportに打つ.JArパッケージ、androidプロジェクトのlibsディレクトリの下に
  • 保存
  • websocket.jsはassets/www/jsディレクトリの下に
  • 保存されます.
  • プロジェクト起動クラスAppを修正する.java
  • を追加
     

    簡単な説明


    1. App.JAva修正後:
    DroidGapが継承され、バインディング文が指定されていることを確認します.

    // websocket

    appView.addJavascriptInterface(new WebSocketFactory(appView),

    "WebSocketFactory");


    JAVA側設定完了.
    2.クライアントの変更
    htmlページ側で手足を作ってwebsocketを優先的にロードする必要があります.jsはいくつかの環境変数の設定を行い、socket.ioはwebsocketのサポートを検出できます.
    websocekt.jsの初期化コード:
    初期化コードに注意してください.
    //window objectvar global = window;
    //WebSocket Object. All listener methods are cleaned up!var WebSocket = global.WebSocket = function(url)......
     
    socket.io client websocketコードクリップ:
    Websocketの検出関数を見てみましょう.
    WS.check = function () {  return ('WebSocket' in global && !('__addTask' in WebSocket))        || 'MozWebSocket' in global;};
    自然にカスタマイズされたwebsocket.jsとsocket.io両者は自然につながっている.
     
    したがって、必要なページJSのロード順序は、

    HTMLページ側では、参照を1行追加するだけでandroidプラットフォームの下でsocket.ioはwebsocketを優先し、簡単で使いやすいです.
    他のプラットフォームについては、/chatdemo/assets/wwwディレクトリの下をzipパッケージにパッケージ化し(を削除することを忘れず)、クラウド構築プラットフォームにアップロードして自動的に構築すればよい.
     

    まとめ


    Phonegapではandroidプラットフォームにwebsocketをサポートさせ、手順は簡単です.
  • eclipseの下でandroidプロジェクト
  • を構築
  • jarおよびsocektをコピーする.jsから対応ディレクトリ
  • Appを修正する.JAva(他のandroid起動クラスでは、メソッド名は異なるが、メソッドボディは一致する)
  • トップページまたは必要なページでsocket.io js医用の前に、参照を追加すれば
  •  

    模範コード

  • socket.ioフレームワークに組み込まれたchatチャットモデルとsocketio-nettyが提供するチャットモデルは、サーバ側が異なる
  • を実現する以外は完全に一致しています.
  • はandroidプロジェクトに簡単にパッケージされており、プレゼンテーションの使用にのみ使用されるため、インタフェースが大きい
  • もあります.
  • サーバ側が必要ですsocket.ioまたはsocketio-nettyのいずれも
  • 本文Android模範chatダウンロード
  • phonegap-websocket-support.jar

  •  

    参考資料

  • Phonegap: http://phonegap.com/
  • WebSocket support in Android’s Phonegap appshttp://anismiles.wordpress.com/2011/02/03/websocket-support-in-android%E2%80%99s-phonegap-apps/

  • websocket-android-phonegaphttps://github.com/anismiles/websocket-android-phonegap