75 lines
2.0 KiB
JavaScript
75 lines
2.0 KiB
JavaScript
|
// http://127.0.0.1:9001
|
||
|
// http://localhost:9001
|
||
|
|
||
|
var server = require('http'),
|
||
|
url = require('url'),
|
||
|
path = require('path'),
|
||
|
fs = require('fs');
|
||
|
|
||
|
function serverHandler(request, response) {
|
||
|
var uri = url.parse(request.url).pathname,
|
||
|
filename = path.join(process.cwd(), uri);
|
||
|
|
||
|
fs.exists(filename, function(exists) {
|
||
|
if (!exists) {
|
||
|
response.writeHead(404, {
|
||
|
'Content-Type': 'text/plain'
|
||
|
});
|
||
|
response.write('404 Not Found: ' + filename + '\n');
|
||
|
response.end();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (filename.indexOf('favicon.ico') !== -1) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var isWin = !!process.platform.match(/^win/);
|
||
|
|
||
|
if (fs.statSync(filename).isDirectory() && !isWin) {
|
||
|
filename += '/index.html';
|
||
|
} else if (fs.statSync(filename).isDirectory() && !!isWin) {
|
||
|
filename += '\\index.html';
|
||
|
}
|
||
|
|
||
|
fs.readFile(filename, 'binary', function(err, file) {
|
||
|
if (err) {
|
||
|
response.writeHead(500, {
|
||
|
'Content-Type': 'text/plain'
|
||
|
});
|
||
|
response.write(err + '\n');
|
||
|
response.end();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var contentType;
|
||
|
|
||
|
if (filename.indexOf('.html') !== -1) {
|
||
|
contentType = 'text/html';
|
||
|
}
|
||
|
|
||
|
if (filename.indexOf('.js') !== -1) {
|
||
|
contentType = 'application/javascript';
|
||
|
}
|
||
|
|
||
|
if (contentType) {
|
||
|
response.writeHead(200, {
|
||
|
'Content-Type': contentType
|
||
|
});
|
||
|
} else response.writeHead(200);
|
||
|
|
||
|
response.write(file, 'binary');
|
||
|
response.end();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
var app;
|
||
|
|
||
|
app = server.createServer(serverHandler);
|
||
|
|
||
|
app = app.listen(process.env.PORT || 9001, process.env.IP || "0.0.0.0", function() {
|
||
|
var addr = app.address();
|
||
|
console.log("Server listening at", addr.address + ":" + addr.port);
|
||
|
});
|