Node.js を使ってイベント駆動で Web アプリケーションを操作してみます。
Contents
Node.js
Node. js は Ryan Dahl が開発したサーバサイド Javascript です。Google 社が開発する JavaScript 実行エンジン V 8 を利用して、イベント駆動型の非同期な Web アプリケーション 開発が可能です。
特徴
- ノンブロッキングI/O
- イベント駆動型
- シングルスレッド
- コアモジュールは C/C# で実装されている
向き
- リアルタイムで大量のデータを処理するサービス
- C10K 問題を回避できる
- リアルタイムにどんどん情報が更新されていくようなサービス
- WebSocket を利用するサービス
不向き
- CPU リソースを大量に必要とする処理が必要なサービス
- イベントが発生が無いような静的なサイトなどのサービス
インストール
今回は、ubuntu に node.js v8 をインストールします。
いくつかインストールする方法があります。
- apt-get
- ppa
- nvm
- n
一番手っ取り早い apt-get で今回はインストールします。nvm や n では複数のバージョンをインストールできます。
1 2 |
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - $ sudo apt-get install -y nodejs |
実行
コンソール
1 2 |
$ node > 処理内容 |
ファイル
1 |
$ node sample.js |
html 読み出し
1 2 3 |
res.writeHead(200); var source = fs.createReadStream('index.html'); source.pipe(res) |
フロント側でサーバ側への接続処理をして、サーバ側でイベントごとに処理分けをしてクライアント側へ返します。
まとめ
フロントで javascript で行っていたように、サーバサイドでフロー型ではなくイベント型で処理が出来るようになります。コールバック地獄になったり、シングルスレッドイベントループを落とさないように注意が必要です。 Promise 化や ES7 で導入された async , await の使用や EventEmitter を活用するのがよさそうです。