-
Notifications
You must be signed in to change notification settings - Fork 1
/
server.js
126 lines (118 loc) · 3.84 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
const express = require("express");
const app = express();
const http = require("http").Server(app);
const socketIO = require("socket.io");
const IP = require("./utils.ts");
const port = process.env.PORT || IP.port;
// const server = express()
// const server = app.use(express.static("dist")).listen(IP.port, IP.ip, () => {
const server = app.use(express.static("dist")).listen(IP.port, IP.ip, () => {
console.log("Listening on " + IP.ip + ":" + port);
});
const io = socketIO(server);
//let setEnemyId = new Map();
let setEnemyId = [];
let clientID;
let clientIDs;
let count = 0;
let snakeArr = [];
let enemyColors = [];
let rooms = {};
app.get("/", function(req, res) {
res.sendFile("dist/", { root: __dirname });
console.log(res, req);
});
app.get("/:id", function(req, res) {
let r = req.params.id;
if (r.includes("game.html")) {
Array.from(r).splice(0, 8);
}
console.log(r);
rooms = { room: r };
res.sendFile("dist/game.html", { root: __dirname });
console.log(rooms);
});
function onConnection(socket) {
socket.join(rooms.room);
clientID = socket.client.id.substring(0, 5);
console.log("Connect ", socket.client.id);
console.log("Connect ", clientID);
// console.log("CLIENTID:", clientID);
// setEnemyId.set(count++, { enemyId: socket.client.id });
setEnemyId.push(clientID);
// setEnemyId.filter(item => item !== clientID);
// console.log("AllIDS:", setEnemyId);
socket.on("init", msg => {
socket.emit("init", msg);
socket.emit("clientId", { id: clientID, room: rooms.room });
socket.on("enemyId", msg => {
snakeArr.push(msg);
console.log("AllIDS:", snakeArr);
// io.emit("enemyId", setEnemyId);
//socket.broadcast.emit("enemyId", msg);
io.emit("enemyId", snakeArr);
// socket.broadcast.emit("enemyId", snakeArr);
});
});
socket.on("start", msg => {
// console.log(msg);
io.emit("start", msg);
});
socket.on("snakeColor", color => {
enemyColors.push(color);
io.emit("snakeColor", enemyColors);
});
socket.on("direction", direction => {
io.emit("direction", { id: clientID, direction });
});
socket.on("enemyDirection", direction => {
// console.log("ENEMY-DIRECTION-SERVER ", direction);
socket.broadcast.emit("enemyDirection", direction);
});
socket.on("comboFX-friend", enemy => {
io.emit("comboFX-friend", enemy);
});
socket.on("apple", apple => {
// console.log("APPLE: ", apple);
io.emit("apple", apple);
});
socket.on("snake", snake => {
// console.log("SNAKE: ", snake);
socket.emit("snake", snake);
io.emit("snake", snake);
});
socket.on("snakeTick", snake => {
socket.broadcast.emit("snakeTick", snake);
});
socket.on("tail", data => {
socket.broadcast.emit("tail", data);
});
socket.on("leave", msg => {
// ?
});
socket.on("gameover", playerId => {
console.log("GAME OVER ID:", playerId);
// snakeArr = snakeArr.filter(i => i.id === socket.client.id);
snakeArr = snakeArr.filter(i => i.id !== playerId);
// io.emit("gameover", clientID);
console.log(snakeArr);
io.emit("gameover", playerId);
io.emit("enemyId", snakeArr);
});
///
socket.on("disconnect", function() {
let disconnectClientID = socket.client.id.substring(0, 5);
count = 0;
socket.broadcast.emit("user disconnected", disconnectClientID);
// console.log("disconnect ", socket.client.id);
// console.log("disconnect ", disconnectClientID);
// console.log(setEnemyId.filter(i => i != socket.client.id));
// setEnemyId.filter(i => i != socket.client.id);
// console.log(snakeArr.filter(i => i.id != socket.client.id));
snakeArr = snakeArr.filter(i => i.id !== disconnectClientID);
// io.emit("enemyId", snakeArr);
console.log("SNAKEARR: ", snakeArr);
});
}
io.on("connection", onConnection);
// http.listen(port, () => console.log("listening on port " + port));