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}/`); });
Running App Forever
Install forever
module:
$ npm install -g forever
Start your application:
$ forever server.js
Alternatively, start your application as a service:
$ forever start server.js
forever
restarts your app when it crashes or stops for some reason. To restrict restarts to 5 times, use:
$ forever -m5 server.js
List all running processes, note the integer in the brackets, and use it to stop a process:
$ forever list $ forever stop 0
List all running processes, and restart a running process goes:
$ forever list $ forever restart 0
When working on your application file, you can use the -w parameter to restart automatically whenever your server.js file changes:
$ forever -w server.js
Running App as Cronjob
// Run main loop as a cronjob. // Alternative to: $ forever start app.js (requires: $ npm install forever) var CronJob = require('cron').CronJob; var job = new CronJob({ cronTime: '00 30 11 * * 1-5', onTick: function() { /* * Runs every weekday (Monday through Friday) * at 11:30:00 AM. It does not run on Saturday * or Sunday. */ }, start: false, timeZone: 'America/New_York' }); job.start();
// Run main loop, executing doSomeWork() on timer // Alternative to: $ forever start app.js (requires: $ npm install forever) function run() { setInterval(doSomeWork, refreshInterval); }; run();