-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
71 lines (51 loc) · 1.55 KB
/
app.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
engine = require('express.io');
app = engine().http().io();
app.use(engine.cookieParser());
app.use(engine.session({secret: 'monkey'}));
app.get('/', function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});
app.get('/:folder/:file', function(req, res) {
res.sendfile(__dirname + '/public' + req.url);
});
app.io.route('enterRoom', function(req) {
var userCount = getRoomPopulation(req.data, req);
if (userCount < 2) {
req.io.join(req.data);
req.io.respond({'isRoomFull': false, index: userCount});
req.session.index = userCount;
req.session.save(function() {
if (userCount == 1) {
app.io.room(req.data).broadcast('roomReady', {});
req.io.socket.on('disconnect', function(){
req.io.room(req.data).broadcast('stopGame');
});
}
});
} else {
req.io.respond({'isRoomFull': true});
}
});
app.io.route('keyDown', function(req){
switch (req.data.key) {
case 38:
req.session.yPos -= 10;
break;
case 40:
req.session.yPos += 10;
break;
case 37:
req.session.xPos -= 10;
break;
case 39:
req.session.xPos += 10;
break;
}
req.session.save(function() {
app.io.room(req.data.roomName).broadcast('playerMove', req.session);
});
});
app.listen(3000);
var getRoomPopulation = function(roomId, req) {
return app.io.sockets.clients(roomId).length;
};