-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
51 lines (42 loc) · 1.98 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
const express = require('express');
const app = express();
app.set('port', (process.env.PORT || 3000));
app.use(express.static(__dirname + '/public'));
app.get('/', function(request, response) {
response.send('Hello World!')
});
let server = app.listen(app.get('port'), function() {
console.log("Node app is running at localhost:" + app.get('port'))
});
// -WebSocket Portion-
// WebSockets work with the HTTP server
io = require('socket.io')(server);//io is the server
let {Player,players,updatePlayers,debugData} = require("./game");//Importing game related functions
// Register a callback function to run when we have an individual connection
// This is run for each individual user that connects
io.sockets.on('connection',
// We are given a websocket object corresponding to that connection
function (socket) {
console.log("We have a new client: " + socket.id);
players[socket.id] = new Player(socket.id,Object.keys(io.sockets.connected).length-1);
//Listening to THIS USER's input
socket.on('input',
function (input) {//The function argument has all the data sent
players[socket.id].keys = input;//Tells the player what keys are being pressed and what not
// This is a way to send to everyone except the sender
//socket.broadcast.emit('data', data);
}
);
// Register a callback function to run when we have an individual disconnection
// This is run for each individual user that disconnects
socket.on('disconnect', function () {
delete players[socket.id];//Delete player from players array
console.log("Client has disconnected");
});
}
);
let intervalo = setInterval(()=>{//Game interval, this is where the game runs
updatePlayers(players);//Based on inputs sent, update players
io.sockets.emit('output', players);//Send drawing information to all clients
io.sockets.emit('debugData',debugData);
},1000/50);