This is an old revision of the document!
Using Node.js
Hello world (text mode):
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; // Text mode: res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
Hello World (HTML mode):
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; // HTML mode: res.setHeader('Content-Type', 'text/html'); res.write("Requested URL: " + req.url); res.write("<h3>Phone Logs</h3>"); res.write("<a href='/data/report_01-02-2017.htm'>report_01-02-2017</a>"); // url of file, relative to root of http server res.end(); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
Read requested files:
const http = require('http'); const fs = require('fs'); const path = require('path'); const url = require('url'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; // Read requested file fs.readFile('./data/report_01-02-2017.htm', function(err, data) { // relative path of file res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); res.end(); }); }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
Serve Homepage and subpages:
const http = require('http'); const fs = require('fs'); const path = require('path'); const url = require('url'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; var q = url.parse(req.url, true); var filename = "." + q.pathname; switch(q.pathname) { case '/': // Serve Homepage res.setHeader('Content-Type', 'text/html'); res.write("Requested URL: " + req.url); res.write("<h3>Phone Logs</h3>"); //res.write("<a href='/data/report_01-02-2017.htm'>report_01-02-2017</a>"); // url of file, relative to root of http server // Read file listing var pth = "./data"; fs.readdir(pth, function (err, files) { if (err) { throw err; } files.map(function (file) { return path.join(pth, file); }).filter(function (file) { //return fs.statSync(file).isFile(); return fs.stat(file).isFile(); }).forEach(function (file) { console.log("%s (%s)", file, path.extname(file)); res.write("<pre>%s (%s)</pre>\n", file, path.extname(file)); }); }); res.end(); break; default: // Read and serve requested file, eg. '/data/report_01-02-2017.htm' fs.readFile(filename, function(err, data) { if (err) { res.writeHead(404, {'Content-Type': 'text/html'}); return res.end("404 Not Found"); } res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); return res.end(); }); break; } }); server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });