forked from devleague/HTTP-Socket-Server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
70 lines (56 loc) · 1.84 KB
/
Copy pathserver.js
File metadata and controls
70 lines (56 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/* jshint esversion: 6 */
const net = require('net');
const fs = require('fs');
const fetchHtmlFiles = (fileName) => fs.readFileSync(fileName);
const indexHTML = fetchHtmlFiles('./public/index.html');
const hydrogenHTML = fetchHtmlFiles('./public/hydrogen.html');
const heliumHTML = fetchHtmlFiles('./public/helium.html');
const error404 = fetchHtmlFiles('./public/404.html');
const cssStyles = fetchHtmlFiles('./public/css/styles.css');
const server = net.createServer( (request) => {
request.on('data', (data) => {
const dataArr = data.toString().split('\n');
const requestLine = dataArr[0].split(' ');
const path = requestLine[1];
switch (path) {
case '/':
case '/index':
case '/index.html':
writeHeader(request, '200 OK', 'text/html', indexHTML);
request.end();
break;
case '/hydrogen':
case '/hydrogen.html':
writeHeader(request, '200 OK', 'text/html', hydrogenHTML);
request.end();
break;
case '/helium':
case '/helium.html':
writeHeader(request, '200 OK', 'text/html', heliumHTML);
request.end();
break;
case '/css/styles.css':
writeHeader(request, '200 OK', 'text/css', cssStyles);
request.end();
break;
case '/404':
case '/404.html':
writeHeader(request, '200 OK', 'text/html', error404);
request.end();
break;
default:
writeHeader(request, '404 BAD_REQUEST', 'text/html', error404);
request.end();
}
});
});
const writeHeader = (request, status, fileType, fileName) => {
request.write(`HTTP/1.1 ${status}
Server: Mellanie's Super Awesome Server
Date: ${new Date().toUTCString()};
Content-Type: ${fileType}; charset=utf-8
Content-Length: ${fileName.length}
Connection: keep-alive
${fileName}`);
};
server.listen(8080, () => console.log(`Server listening on port 8080`));