とりあえずコードはよ。って方はgithub
##何が出来るの?
Androidアプリとブラウザでリアルタイム双方向通信のサンプルです。要はチャットアプリです。サーバは受信データをブロードキャストするようにしています。
非常に簡単なサンプルですが、ブラウザクライアントと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を使ってプロトタイピングすると、ブラウザ、サーバ、モバイル、ハードと様々なものを双方向リアルタイム連携できるようになります。