= 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("Phone Logs
");
res.write("report_01-02-2017"); // 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("Phone Logs
");
//res.write("report_01-02-2017"); // 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("%s (%s)
\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();
== References ==
* [[https://www.w3schools.com/nodejs/default.asp|W3 Schools Tutorial: Node.js]]
* [[https://nodejs.org/dist/latest-v6.x/docs/api/synopsis.html|Node.js API Synopsis]]
* [[http://nodeexamples.com|Node Examples]]
* [[https://github.com/mapbox/node-sqlite3/wiki/API|SQLite3 API for Node JS]]