-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
74 lines (65 loc) · 1.86 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const express = require('express');
const app = express();
const http = require('http');
const path = require('path');
const server = http.createServer(app);
const { Server } = require('socket.io');
const Room = require('./room');
const io = new Server(server);
app.use(express.static(path.join(__dirname, 'build')));
app.get('/', (req, res, next) => res.sendFile(__dirname + './index.html'));
var rooms = new Object();
io.on('connection', (socket) => {
var roomid;
socket.on('create game', () => {
try {
rooms[roomid].makeGame();
var g = rooms[roomid].game;
io.to(roomid).emit("game", {game: g.game, players: g.players, turn: g.turn});
rooms[roomid].started = true;
} catch {}
});
socket.on('add', (pos) => {
try{
var g = rooms[roomid].game;
if (socket.id == g.players[g.turn].name) {
g.add(JSON.parse(pos));
io.to(roomid).emit("game", {game: g.game, players: g.players, turn: g.turn});
}
} catch {}
});
socket.on('create', (name) => {
try {
socket.join(name);
roomid = name;
rooms[name] = new Room(name);
io.to(name).emit("joined", rooms[name].players);
} catch {}
});
socket.on('join', (room) => {
try{
if (!rooms[room].started) {
if (rooms[room].add(socket.id)) {
socket.join(room);
io.to(room).emit("joined", rooms[room].players);
roomid = room;
}
}
} catch {}
});
socket.once('disconnect', () => {
try {
if (rooms[roomid] !== undefined) {
rooms[roomid].remove(socket.id);
io.to(roomid).emit("joined", rooms[roomid].players);
if (rooms[roomid].players.length==0) {
delete rooms[roomid];
}
}
} catch {}
});
});
const PORT = process.env.PORT || 8080;
server.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});