Socket.IO for Android
はじめに
就職先募集中です\(^o^)/
前エントリの中の一部の実装の話です。Node.js + Socket.IOのサーバの基本構成と、Android版のSocket.IOクライアントのサンプルです。
とりあえずコードはよ。って方はコチラへ
※2013/3/10 コードをアップデートしてnginxのリバースプロキシに対応しました
何が出来るの?
Androidアプリとブラウザでリアルタイム双方向通信のサンプルです。要はチャットアプリです。サーバは受信データをブロードキャストするようにしています。
非常に簡単なサンプルですが、ブラウザクライアントとAndroidアプリの工夫次第で、色々な実験やプロトタイピングが出来ると思います。前エントリのプロトタイプはADKを接続してハードまでリアルタイム連携させてみたものです。
画面サンプル(自機の送ったものは表示されない)
ブラウザの画面
Androidの画面
実装
サーバ
ここを参考にして構築しました。 動作確認したバージョンは以下になります。
- 環境はMac Mountain Lion
- nvmとnpmを使用
- Node.js : v0.6.6/v0.8.7
- Socket.IO : v0.9.10
- express 3.0.0rc3
Node.jsについてはv0.8系からは、Macの場合Xcodeがインストールされている必要があるようです。expressはそのままインストールすると最新版の3系がインストールされます。2系でインストールしたい場合は
$ npm install -g express@2
とするようです(ここを参照)。なお、express2とexpress3ではapp.jsの記述方法など変更されているので注意して下さい。
Android
Android側ですがここを参考にして作成しました。SDKはv16をターゲットとしていますが、android-support-v4ライブラリを使っていますので、そこそこの端末で動作すると思います。練習のためFragmentを使ってSocket.IOのロジック部分は、UI無しのFragmentに分けてありますがコードがやや複雑になってしまいました...もっとSocket.IOの理解が深まれば簡易的な実装にできると思いますが、とりあえず現状で公開しています。
このコードをベースに利用する場合
- io.socketパッケージ以下をそのまま使えます(ライブラリ化してもOK)
- libsのweberknecht.jarが必要です
- JSONのパースにJSONICを使用していますが、ここは自由に...
まとめ
Node.js + Socket.IOを使ってプロトタイピングすると、ブラウザ、サーバ、モバイル、ハードと様々なものを双方向リアルタイム連携できるようになります。 ADKまで含めたプロトタイピングの例はSoftware Design8月号に記事を書いていますので、そちらも参考にしてください(ただし記事はSocket.IOではなくWebSocketを使用しているので古いです...)