ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

node.js

node.jsで遊んでみたのでそのメモ。

特徴

  • サーバサイドのJavaScript
  • ノンブロッキングI/O
  • イベントドリブン
  • シングルスレッド
  • JavascriptエンジンがGoogle V8

インストール手順

npm(Node Version Manager)を使用してnode.jsのバージョン管理が出来ますが今回はバージョン固定でインストールです。

インストール方法は大きく分けるとubuntuのデフォルト、最新バイナリ、ソースコードの3種類があるけど、今回はソースコードでのインストールで実施した。

ubuntuのデフォルトでインストール

% sudo apt install nodejs
% nodejs -v
V4.2.6

最新版バイナリでインストール

% curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
% sudo apt install nodejs
% nodejs -v
V7.5.0

% sudo apt install node-gyp

ソースコードからインストール

% wget http://nodejs.org/dist/v7.5.0/node-v7.5.0.tar.gz
% tar xzvf node-v7.5.0.tar.gz
% cd node-v7.5.0
% ./configure
% make
% make install

サンプル1

単純にnode.jsを動かしてみよう。

sample.js

ソースコードは次のように。

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(1234);

console.log('Server running at http://127.0.0.1:1234/');

実行は次のように。

% nodejs sample.js
Server running at http://127.0.0.1:1234/

ブラウザからhttp://localhost:8124/にアクセスします。

そうしたら、"Hello World"が表示される。

サンプル2

sample2.js

ソースコードは次のように。

// netモジュールを読み込み、インスタンスを作成
var net = require('net');

// サーバーのイベントハンドラを定義
net.createServer(function (socket) {

    // ソケット経由でメッセージを送出
    socket.write('This is RLS Tech News Echo Server\r\n');

    // データを受信したら、そのままメッセージとして送出
    socket.on('data', function(data) {
        socket.write(data);
    });
}).listen(1234, '127.0.0.1'); // 127.0.0.1の1234番ポートで待機

次のようにsample2.jsを起動しておき、

% nodejs sample2.js

別のターミナルからtelnetでアクセスして文字入力をすると、同じ文字がエコーで返ってくる。

% telnet localhost 1234
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
This is RLS Tech News Echo Server
Hello
Hello
^]

telnet> quit
Connection closed.
%

JavaScrpitで通信できるって面白いね。