Node.jsでサーバーの画像や音声ファイルにアクセスさせる場合Content-Typeを定義しないといけないらしい。
雛形のコピペでもいいのだけどもう少し楽をすることにしました。
request.urlから簡易拡張子判定を行って同じタイプのものに振り分けています。
server.listenのIPアドレスはローカルサーバのものなので変更が必要です。
Nodeの作り方毎回ググっている気がするのでメモ
(1)フォルダー作って、呼び出すhtmlと関連ファイルを集めて
(2)フォルダーを端末(ターミナル)で開いて
npm install
npm init
でnode.js環境を作成
(3)下のファイルも配置して
(4)node sv5で起動
(5)サーバのフォルダにmain.htmlがある場合はローカルネットワークのブラウザから
http://192.168.11.8:3000/main.htmlでアクセスします。
(IPアドレスは家のローカルの例です。)
クライアント側のマシン、ブラウザごとに挙動が違うのは困ったものです。
sv5.js
雛形のコピペでもいいのだけどもう少し楽をすることにしました。
request.urlから簡易拡張子判定を行って同じタイプのものに振り分けています。
server.listenのIPアドレスはローカルサーバのものなので変更が必要です。
Nodeの作り方毎回ググっている気がするのでメモ
(1)フォルダー作って、呼び出すhtmlと関連ファイルを集めて
(2)フォルダーを端末(ターミナル)で開いて
npm install
npm init
でnode.js環境を作成
(3)下のファイルも配置して
(4)node sv5で起動
(5)サーバのフォルダにmain.htmlがある場合はローカルネットワークのブラウザから
http://192.168.11.8:3000/main.htmlでアクセスします。
(IPアドレスは家のローカルの例です。)
クライアント側のマシン、ブラウザごとに挙動が違うのは困ったものです。
sv5.js
var http = require("http"); var fs = require("fs"); var server = http.createServer(); server.on("request", doRequest); server.listen(3000,"192.168.11.8"); console.log("Server running at 3000"); function getRequestType(request){ if ( request.url.indexOf(".html") != -1) { return "html"; } if ( request.url.indexOf(".jpg") != -1) { return "jpeg"; } if ( request.url.indexOf(".wav") != -1) { return "wave"; } if ( request.url.indexOf(".css") != -1) { return "css"; } return ""; } function doRequest(request, response) { switch(getRequestType(request)) { case "html": fs.readFile("."+request.url, "UTF-8", function (err, data) { response.writeHead(200, {"Content-Type": "text/html"}); response.write(data); response.end(); } ); break; case "css": fs.readFile("."+request.url, "UTF-8", function (err, data) { response.writeHead(200, {"Content-Type": "text/css"}); response.write(data); response.end(); } ); break; case "wave": fs.readFile("."+request.url, "binary", function (err, data) { response.writeHead(200, {"Content-Type": "audio/wav"}); response.write(data, 'binary'); response.end(); } ); break; case "jpeg": fs.readFile("."+request.url, "binary", function (err, data) { response.writeHead(200, {"Content-Type": "image/jpeg"}); response.write(data, "binary"); response.end(); } ); break; } };