node.jsをシンプルなWebサーバーとして使う

非常にシンプルなHTTPサーバーを動かしたいと思っています。「example.com」へのすべてのGETリクエストは、「index.html」を通常のHTMLページとして提供しなければなりません(つまり、通常のWebページを読むのと同じ経験ができます)。

以下のコードを使えば、index.htmlの内容を読むことができます。どうすれば index.html を通常のWebページとして提供できますか?

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(index);
}).listen(9615);

以下のある提案は複雑で、使いたいリソース(CSS、JavaScript、画像)ファイルごとにget行を書かなければなりません。

画像、CSS、JavaScriptを含む1つのHTMLページを提供するにはどうしたらいいですか?

今のあなたに欠けている部分は、「送る」ということだと思います。

Content-Type: text/plain

WebブラウザでHTMLを表示させたい場合は、これを次のように変更します。

Content-Type: text/html
解説 (3)

switchステートメントを扱うよりも、コンテントタイプを辞書から探し出す方がすっきりすると思います。

var contentTypesByExtension = {
    'html': "text/html",
    'js':   "text/javascript"
};

...

    var contentType = contentTypesByExtension[fileExtension] || 'text/plain';
解説 (2)

Edit:

Node.jsのサンプルアプリ「Node Chat」は、欲しい機能を備えています。
そのREADME.textfileには 3.ステップは、あなたが探しているものです。

ステップ1

  • ポート8002にhello worldで応答するサーバーを作成する。

ステップ2

  • index.htmlを作成し、それをサーブする

ステップ3

  • util.jsの導入 任意の静的ファイルを配信するようにロジックを変更する
  • ファイルが見つからない場合は404を表示

ステップ4

jquery-1.4.2.jsを追加します。

  • client.jsの追加
  • index.htmlをニックネームの入力を促すように変更

ここでは、server.jsについて説明します。

ここでは、util.jsを使用しています。

解説 (5)