Androidのwebviewでwebsocketを実現


まずwebsocketをくどくど言って、その名の通り、websocketもsocketで、通信に使うので、webに使うだけなので、websocketと言います.websocketはhtml 5仕様の1つで、chrome、ffなどの主流ブラウザでサポートされています.しかし、私たちandroidのオリジナルブラウザは......androidのwebviewもオリジナルブラウザの核心を使っているので、同じ悲劇です.
Websocketが登場してからsocketを開発した人がいますio、これは何ですか?Websocketをカプセル化することで、Websocketをサポートしていないプラットフォームがsocketを呼び出している場合でもio時でも正常に通信できます.そしてsocket.を使っていますioの場合、支がwebsocketをサポートしているかどうかにかかわらず、コード1部だけでいいです.
socket.io,android環境のwebviewでsocket通信を使用できるようになった.しかし、androidはwebsocketをサポートしていません.ioはいったいどのようにしてsocket通信を実現しているのだろうか.なるほどioは、xhr、flashsocketなど、プラットフォームがwebsocketをサポートしていない場合に他の方法で実現します.androidではsocket.io実装ではxhr方式が用いられる.
xhrは通信を実現しているが,websocketに比べてxhrの実現方式の性能は比べものにならない.ではandroidにも本当のwebsocketを実現させる方法はありますか?はい、誰かが迂回する方法を考え出しました.
webviewとページが呼び出せる特性を利用して、JAVA NIOを採用してwebsocketを一度実現しました.これで本物のsocketです.
実はすでにこのような方式を実現している人がいて、しかもいくつかのプラグインを導入しておよびごく少ないコードを修正するだけでsocketを採用することができます.ioのコードはandroidのwebviewでwebsocketを実現する.
プロジェクトgithubアドレス:https://github.com/koush/android-websockets#readme
使い方を簡単に説明します.
  • EclipseでAndroidプロジェクト
  • を新規作成
  • animesh kumarのwebssocket-android-phonegapプロジェクトjavaファイル(WebSocketFactory.javaとWebSocket.java)をjarパッケージにし、androidプロジェクトのlibsディレクトリの下に保存し、プロジェクト
  • にインポートする
  • websocket.jsはassets/www/jsディレクトリの下に
  • 保存されます.
  • プロジェクト起動クラスAppを修正する.JAvaはAppです.JAvaのonCreateメソッドには、
    appView.addJavascriptInterface(new WebSocketFactory(appView), "WebSocketFactory");
  • というコードが追加されています.
  • を追加
    この行はsocket.をロードする必要があることに注意してください.io.jsの前にロード