-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathserver.js
More file actions
62 lines (55 loc) · 1.47 KB
/
server.js
File metadata and controls
62 lines (55 loc) · 1.47 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
/**
* Created by Administrator on 2016/9/17.
*/
var http = require("http");
var fs = require("fs");
var path = require("path");
var mime = require("mime");
var cache = {};
function send404(res) {
res.writeHead(404,{
"content-type":"text/plain"
});
res.write("Pages not found.");
res.end();
}
function sendFile(res,filePath,fileContents) {
res.writeHead(200,{
"content-type":mime.lookup(path.basename(filePath))
});
res.end(fileContents);
}
function staticFileServer(res,cache,absPath) {
if (cache[absPath]){
sendFile(res,absPath,cache[absPath]);
}else{
fs.exists(absPath,function (exists) {
if (exists){
fs.readFile(absPath,function (err,data) {
if(err){
send404(res);
}else{
cache[absPath] = data;
sendFile(res,absPath,data);
}
})
}else{
send404(res);
}
})
}
}
var server = http.createServer(function (req,res) {
var filePath = false;
if(req.url === "/"){
filePath = "public/index.html";
}else{
filePath = "public" + req.url;
}
var absPath = "./" + filePath;
staticFileServer(res,cache,absPath);
}).listen(3000,function () {
console.log("server is running at port 3000");
});
var chatServer = require("./lib/chat_server.js");
chatServer.listen(server);