-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
50 lines (41 loc) · 1.32 KB
/
server.js
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
var static = require('node-static'),
http = require('http'),
util = require('util'),
socket = require('socket.io');
var webroot = "./client",
port = 8000;
var file = new(static.Server)(webroot, {
cache: 0
});
function requestHandler(req, res) {
req.addListener('end', function() {
file.serve(req, res, function(err, result) {
if (err) {
console.error('Error serving %s - %s', req.url, err.message);
if (err.status === 404 || err.status === 500) {
file.serveFile(util.format('/%d.html', err.status), err.status, {}, req, res);
} else {
res.writeHead(err.status, err.headers);
res.end();
}
} else {
console.log('%s - %s', req.url, result.message);
}
});
});
}
var app = http.createServer(requestHandler);
var io = socket.listen(app);
io.sockets.on('connection', function (socket) {
socket.emit('join', {'name': socket.id});
socket.on('say', function(data) {
socket.broadcast.emit('msg', {name: socket.id, msg: data.msg});
socket.emit('msg', {name: socket.id, msg: data.msg});
});
});
//Work around a bug in socket.io - it delegates old handlers correctly
//but fails to remove them in versions of node.js. See:
// https://github.com/LearnBoost/socket.io/pull/1080
// https://github.com/LearnBoost/socket.io/issues/987
app.removeListener('request', requestHandler);
app.listen(port);