node.js
【1】node.jsでの仮想通信
【期待】node.jsで複数のサーバを同時に起動し、仮想的にクライアントサーバ環境を作る。
- クライアントサーバ環境での通信のテスト環境を作る。
- これまでのサーバ間でのやり取りを実際に行うまで結果が出ることが無い非効率な状況を改善できる。
- 擬似環境で何度もテストすることで、オペレーションミスの減少、バグの早期発見につながる。
- また、1テストの消化時間が早くなれば、多くのテストを実施できるようになり、システムの品質向上につながる。
これまでの経緯
同じ環境を作るには、apache, tomcat, weblogicのようなサーバアプリをインストールする。
- 複数サーバを立てるにしてもポート解放などが面倒である。
- コンパイルされていて内部がなかなか見れることはない。
- 複数サーバを立てることでマシンに高負荷がかかり、他の作業ができなくなる。
- 結局は実サーバ(別PC)を使うことになる。
【2】node.jsでのwebsoket
従来のチャットアプリケーションを構築する場合 1. Aが投稿(messageをDBに保存) 2. Bが閲覧(messageDBを検索)
※この時Bがリロードせずに最新メッセージを取得するには、定期的(10秒間隔等)にDBを検索し、最新messageが投稿されていないかを確認する。(ポーリング)
※ポーリングには送信側が送信データを持っていても受信側から問い合わせがあるまで待機となるため、タイムラグが発生する。
- ロングポーリング
- XMLHttpRequest
新しいチャットアプリケーション
- Aが投稿(messageを複数に送信し、履歴用にDBに登録)
Bが閲覧(messageを受信)
※この時BはDBの応答を待たずにmessageを受信することになり、高速である。 ※違いはポーリングでやってることを、コネクション貼りっぱなしにしてメッセージを投稿されたタイミングで全てのコネクションにメッセージ送信できる点です。
※ 従来:コネクション接続→メッセージ取得→コネクション切断を繰り返し 現在:コネクション接続→メッセージ取得→待機 を繰り返し
node.jsの凄いところ - サーバからクライアントに対してプッシュができる。 - 専用のプロトコルでコネクションを維持し続けれる。