Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
26
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

Node.js + Socket.IOのサーバの基本構成と、Android版のSocket.IOクライアントのサンプル

とりあえずコードはよ。って方はgithub

何が出来るの?

Androidアプリとブラウザでリアルタイム双方向通信のサンプルです。要はチャットアプリです。サーバは受信データをブロードキャストするようにしています。

 非常に簡単なサンプルですが、ブラウザクライアントとAndroidアプリの工夫次第で、色々な実験やプロトタイピングが出来ると思います

画面サンプル(自機の送ったものは表示されない)

ブラウザの画面
ブラウザの画面
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を使ってプロトタイピングすると、ブラウザ、サーバ、モバイル、ハードと様々なものを双方向リアルタイム連携できるようになります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
26
Help us understand the problem. What are the problem?