話題の記事Androidアプリからnode.js+Socket.IOと双方向通信する#Node.js#Android#Socket.IOT君2013.02.074599103この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。AndroidアプリからWebViewなどを介さずにnode.js+Socket.IOと双方向通信するための簡単なサンプルを紹介します。サーバ側の実装Androidアプリからnode.js+Socket.IO間で双方向通信するには、socket.io-java-clientというライブラリを使用します。今回はサーバ側には弊社うえじゅん氏が公開している記事で作ったチャットアプリを使用しますので、まずは以下の記事を参考にチャットアプリを作っちゃってください。簡単なチャットアプリの作成チャットアプリの準備が終わったら、早速Androidアプリ側の準備をしましょう。Androidアプリの実装サンプルプロジェクトのダウンロード今回紹介するAndroidアプリのソースコードをGitHubにあげてあるのでダウンロードしてください。hakamata/SocketIOSampleサーバ側を起動した状態で、Androidのサンプルアプリを起動してみてください。ブラウザを立ち上げて「http://localhost:3000」にアクセスしメッセージを送信すると、Android側の表示が更新されます。逆にAndroidアプリからメッセージを送信すると、ブラウザ側の表示が更新されます。4.03のエミュレータで確認しました。必要なライブラリの設定ここからは要点をしぼって解説します。必要なライブラリのダウンロードAndroidアプリからnode.js+Socket.IO間で双方向通信するにはsocket.io-java-clientを使用します。以下のリンクからダウンロードして下さい。socket.io-java-clientダウンロードしたライブラリのインポートダウンロードしたライブラリをインポートします。ダウンロードしたライブラリはソースの状態なのでantを使ってjarファイルにアーカイブします。build.xmlのあるディレクトリに移動してから以下のコマンドを実行すると、jarディレクトリ内にsocketio.jarというjarファイルが作成されます。これをAndroidプロジェクトのlibディレクトリ内に入れればインポートは完了です。jarsocket.io-java-clientの使い方IOCallbackインターフェイスIOCallbackインターフェイスでは、以下のメソッドが定義されていますので、適宜実装しておきましょう。onConnect()サーバとの接続が確立されたときに実行されるメソッド。onDisconnect()サーバとの接続が切断されたときに実行されるメソッド。ack)JSONを受信したときに実行されるメソッド。ack)メッセージを受信したときに実行されるメソッド。args)イベントを受信したときに実行されるメソッド。socketIOException)エラー発生時に実行されるメソッド。私は以下のように実装しました。};サーバと接続サーバとの接続するためにはまずSocketIOクラスのインスタンスを生成します。コンストラクタの引数に接続先のURLを設定して下さい。エミュレータを使ってローカルのサーバに接続する場合はlocalhostではなく10.0.2.2にします。android.permission.INTERNETのパーミッションを追加するのを忘れないようにして下さい。接続には、SocketIOクラスの以下のメソッドを使用します。socket.connect(iocallback);}イベントの送信イベントの送信には、emitメソッドを使用します。emitメソッドの第1引数はイベント名、第2引数は送信するデータになります。テキストフィールドをリセットeditText.setText("");}イベントの受信イベントの受信は、IOCallbackインターフェイスのonメソッドで定義します。onメソッドの中でUIを操作しようとするとCalledFromWrongThreadExceptionがスローされるので注意して下さい。{e.printStackTrace();}}});}}).start();}まとめご覧の通り、socket.io-java-clientを使用すればAndroidアプリからnode.js+Socket.IO間で双方向通信が簡単に実現できます。