Skip to content

Commit e13a20f

Browse files
save file
1 parent 9eef79a commit e13a20f

File tree

1 file changed

+17
-92
lines changed

1 file changed

+17
-92
lines changed

blog/25-07-24/http-server/ex/http-server-minimal.js

Lines changed: 17 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,37 @@
11

22

33

4-
var fs = require('fs');
5-
6-
var key,cert = setup();
74
var port = 3002;
8-
var server = require('https').createServer({key,cert},request).listen(port);
9-
console.log(`https://localhost:${port}/`);
10-
5+
var server = require('http').createServer(request).listen(port);
6+
console.log(`http://localhost:${port}/`);
117
function request(req,res){
128
console.log(req.method,req.url);
139
var url = req.url.slice(1);
14-
if(url=='')url='index.html';
1510

16-
switch(url){
11+
if(url==''){
12+
res.writeHead(200,{'content-type':'text/html'}).end(html);
13+
return;
14+
}
1715

18-
case 'hello' : return hello(req,res);
16+
var ext = url.split('.').at(-1),type;
17+
switch(ext){
18+
19+
case 'html' : type='text/html';
20+
case 'js' : type='text/javascript'; break;
21+
case 'css' : type='text/css'; break;
1922

2023
}//switch
2124

22-
if(!fs.existsSync(req.url)){
23-
res.writeHead(404).end(`404 Not Found : ${req.url}`);
24-
return;
25-
}
26-
var stat = fs.statSync(req.url);
27-
if(!stat.isFile()){
28-
res.writeHead(404).end(`404 Not Found : ${req.url}`);
29-
return;
30-
}
31-
32-
var type = mime(abs);
3325
res.writeHead(200,{'content-type':type});
34-
fs.createReadStream(abs).pipe(res);
26+
require('fs').createReadStream(url).pipe(res);
3527

3628
}//request
3729

3830

39-
function hello(req,res){
40-
41-
res.writeHead(200,{'content-type':'text/html'});
42-
res.end(`
43-
<style>html{font-family:arial}body{margin:20px}</style>
44-
<h3>HTTPS Works!</h3>
45-
<h4 style='color:blue'>/hello</h4>
46-
`);
47-
48-
}//hello
49-
50-
51-
function setup(){
52-
53-
key =
54-
'-----BEGIN RSA PRIVATE KEY-----\n' +
55-
'MIIEpAIBAAKCAQEAqWZ5x4R8GVoRKeXe++SN54MzUD1BD/eNfmELIedKeof0m/Cx\n' +
56-
'XQZn2KyxYzvPmCKM6qv0Y458sadmaG0HQGUb55lmox6T7U5LjF3C7HM2PZjuQw5Z\n' +
57-
'4nnCEcu/yEcqNU/a5b9noBY132v/0iIvOn5f4ptQZ8JslU6YmCdznt23rgHUjcOx\n' +
58-
'LYdU8xT53HwEvxZoem8hVIYek+mX2nU8AIj0WMx+piqaxtxFHv6PNmNe6M81ggxL\n' +
59-
'Tr7DvECS+Nl+s5ec7uOClsgafKt5ZxvYufsI7vxTC47/Co2TYuNgpIVqmpykg1Yx\n' +
60-
'KyElGzSIpB7bzDlqq8erU98kjCYzjTiy67KJuQIDAQABAoIBABblbOxUsdlTXSKG\n' +
61-
'mV7+g1eZWiQsQ1D/Kra8Mx7//gcVvTAeljp2lS6qGMfK28I6WUWWvE+AgMYaVDMl\n' +
62-
'GWfQwrbI+yBtD51xibCNM711zQ0CUKHrnKaJwntZSLCvPbs68eE/v6fZmKp8FHW4\n' +
63-
'fR2w2xDr4TBFDRwZJXLbUjtUyHDSQSMUiIfAsJoDTloAsYXGm5bqVv+9mxvli0gp\n' +
64-
'lmiFW3CZCmZC9vjid1Gn4CI3SpwU/Mu6a8ldvA/fU6WnTJ+Wlpi8DcvacmaHLqAd\n' +
65-
'U+CXchyi1/Q6TmG3a82QRIntSLA4R+tr6OLQprMre1C9Mb/e+7L0TG0TCYlKLuvj\n' +
66-
'4W3PgckCgYEA/TEYkDtc0m4nXmPwxYJQkPyMT/BGqvoAcKBu7EF28+bN8de53SHP\n' +
67-
'PREsdFgN/vPGvjHsIXhPyNmRkw+kRYtUCmUWD2SJN0weZ0d+Q3NtGSfLiXIlJwaT\n' +
68-
'/vlyxevVg+JW/8c5sL7Fj4vAVxJCJzYM9Kzvsst4t85eAY/DIp09W6cCgYEAq0d3\n' +
69-
'D7aJwWLi2IdPjW2rJ/bdgLMDUGo0x85RCBH2qb7MPAVenQylcknXXvSLrwv93PbJ\n' +
70-
'w+IQuS1hRXmRLSq24TmOX7hWLILBhUh7bEwQqW6cr0TX4QgkbI8CJNwfyTKqj0ye\n' +
71-
'UEEUCnBaDboTqPAXM9+EAQwzmaSlkQM3VPQ0G58CgYEAve/yyWB/Ba11Ay5eFQzp\n' +
72-
'e5q5d858dQ8O/W6dR8bkgZwHqwF2gRk36kvT2YOlHDmsQkoZJhKnZ7kvp+74AOPA\n' +
73-
'q/uhTPLSrRUBSeEsK1WP5msgGX/ztw8MPx7KpweAKWvGcCL4eErk0ga4x5j+34OA\n' +
74-
'vJxvROW3Lcw2YV2DuZfTy8kCgYABv5gCjA158OV56l+whOcTYFzAfJNTFdJ2G7AO\n' +
75-
'EgjfkLgLAM8HcWKa+Q/+wyZN4iR0RfynSD59dW4hxGzr9hypzembJomSqL8K+kNw\n' +
76-
'RpKA+EUXMO+3N1sP1KHj+G9GoYLGNbUEArYOqTjyHO0oc1L5T5XMYPCB6AFcqpi9\n' +
77-
'AEUr5wKBgQC/m5Eq2XWG2XP1i3G0ut0ierM8+XXw1ydiyAOuHM3aUBwtCirsIBAd\n' +
78-
'kGlVjhwrYIs6DfcPf0hdroPmEHl8BBb1zGUISYZSNhVY2Sxfut26nYAIV85pSmrg\n' +
79-
'Lk1ryU8dYQMT7+7GqxfSaznp6iGm/Blfcnk9YbBOgvs7i6ewJC49kg==\n' +
80-
'-----END RSA PRIVATE KEY-----\n'
81-
;
82-
cert =
83-
'-----BEGIN CERTIFICATE-----\n' +
84-
'MIIDcjCCAlqgAwIBAgIBATANBgkqhkiG9w0BAQUFADAlMSMwIQYDVQQDExpsb2Nh\n' +
85-
'bGhvc3QgdGVzdCBjZXJ0aWZpY2F0ZTAeFw0yNTA2MjYxNzQ5MDBaFw0yNjA2MjYx\n' +
86-
'NzQ5MDBaMCUxIzAhBgNVBAMTGmxvY2FsaG9zdCB0ZXN0IGNlcnRpZmljYXRlMIIB\n' +
87-
'IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqWZ5x4R8GVoRKeXe++SN54Mz\n' +
88-
'UD1BD/eNfmELIedKeof0m/CxXQZn2KyxYzvPmCKM6qv0Y458sadmaG0HQGUb55lm\n' +
89-
'ox6T7U5LjF3C7HM2PZjuQw5Z4nnCEcu/yEcqNU/a5b9noBY132v/0iIvOn5f4ptQ\n' +
90-
'Z8JslU6YmCdznt23rgHUjcOxLYdU8xT53HwEvxZoem8hVIYek+mX2nU8AIj0WMx+\n' +
91-
'piqaxtxFHv6PNmNe6M81ggxLTr7DvECS+Nl+s5ec7uOClsgafKt5ZxvYufsI7vxT\n' +
92-
'C47/Co2TYuNgpIVqmpykg1YxKyElGzSIpB7bzDlqq8erU98kjCYzjTiy67KJuQID\n' +
93-
'AQABo4GsMIGpMAkGA1UdEwQCMAAwIAYDVR0RBBkwF4IJbG9jYWxob3N0hwR/AAAB\n' +
94-
'hwR/AAACMB0GA1UdDgQWBBRN+qxeeW3ngsZaImHYKWaf4ztRkDALBgNVHQ8EBAMC\n' +
95-
'AvQwOwYDVR0lBDQwMgYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYB\n' +
96-
'BQUHAwEGCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA5zANBgkqhkiG9w0BAQUF\n' +
97-
'AAOCAQEAgoAgtNpwyHjf/lEaYNxPXU3IuvpBJb0J2pU/vU3ImGTZoCpEjqAnduUB\n' +
98-
'zPIL9jk2xoIn4w2u8h4AALi/0+8/w+Lf39EGVw2v5Obd5/L00aRtYq4syitWh7st\n' +
99-
'cGiJhL6OR6sZw1/Z+MsQWoXn1K8wEusalNs9zTimpn/wt+fFFem5Ao5sFKp7OvxE\n' +
100-
'tJGOIjEq0ErBvbejRMLQTFHaBKsSyA/G8fFyQaAdnOuPHpJJjNfWhrNfr3kxuKsF\n' +
101-
'c7BcCD7p6Q3GVcUsIpAudj6k0ueDottTlQ7PVwiJlWTISvzCrz4dI1dwE7VpZ04Y\n' +
102-
'AZpOcmiSQO2WFjUS/N5y9g+zJs/Osw==\n' +
103-
'-----END CERTIFICATE-----\n'
104-
;
105-
return {key,cert};
106-
107-
}//setup
108-
109-
31+
var html = `
32+
<style>html{font-family:arial}body{margin:20px}</style>
33+
<h3>It Works!</h3>
34+
`;
11035

11136

11237

0 commit comments

Comments
 (0)