|
|
- /**
- * 1-27-18
- *
- * Main server file which handles users, rooms -- everythang
- */
-
- //eh?
- const serverUtils = require('./serverUtils.js');
-
- //used for the getting the word array
- const utils = require("./utils.js");
-
-
-
-
- //const sqlStuff = require("./sql.js");
-
- var Room = require("./room");
-
- var Player = require("./player");
-
- //import {Room} from 'room.js';
-
- //import {Player} from 'player.js';
-
-
- //list of all players --accessed using names like a dic
- var players = {};
-
- //list of all the rooms
- var rooms = {};
-
- var app = require('express')();
- var http = require('http').Server(app);
- var io = require('socket.io')(http);
-
- const PORT = 3000;
-
-
- /**
- * Generates json sent to user on 'sendRooms'
- *
- * return [{name: passwordBool: capacity: occupants: }]
- */
- var generateSendRoomsJSON = function()
- {
- var obj = new Object();
- obj.rooms = [];
-
- //rooms.forEach(function(r)
-
- Object.keys(rooms).forEach(function(key)
- {
- console.log("**************");
- console.log(key);
- if(rooms[key] != null)
- {
- var roomObj = new Object();
-
- roomObj.name = key;
-
- if(rooms[key].password == null)
- {
- roomObj.passwordBool = false;
- }
- else
- {
- roomObj.passwordBool = true;
- }
- roomObj.capacity = rooms[key].capacity;
- roomObj.occupants = rooms[key].users.length;
-
- obj.rooms.push(roomObj);
- }
- else
- {
- console.log("would not tough it with a 10ft pole");
- }
- });
-
- return obj;
- }
-
-
-
- app.get('/', function(req, res)
- {
- console.log("err");
- res.sendfile('index.html');
- });
-
- //Whenever someone connects this gets executed
- io.on('connection', function(socket)
- {
- var p = new Player(socket);
-
- console.log('A user connected');
-
- /**
- *Register user nickname/handle (register) Client => Server
- */
- socket.on('register', function(data)
- {
- console.log(data + " registered");
-
- //checks for user name in use
- //if(serverUtils.userAvailable(data, players))
- if(!(data in players))
- {
- p.name = data;
-
- players[data] = p;
-
- socket.emit('sendRooms', generateSendRoomsJSON());
- console.log("send rooms called");
- //console.log(generateSendRoomsJSON());
- }
- else
- {
- socket.emit('registerFailed', 'User name taken');
- console.log("registration failed sent");
- }
-
- //console.log(player);
- });
-
- /**
- *Create Room (createRoom) Client => Server
- * data {password: , capacity: }
- */
- socket.on('createRoom', function(data)
- {
- console.log(data + "create room");
- // console.log(data);
- // console.log(" ");
- rooms[p.name] = new Room(data.capacity, data.password, p);
-
- //sends updated room list to all users not in a room
- var dd = generateSendRoomsJSON();
-
- Object.keys(players).forEach(function(key)
- {
- if(players[key] != null)
- {
- if(players[key].room == null)
- {
- players[key].socket.emit('sendRooms', dd);
- }
- }
- else
- {
- console.log("player was null Bad!");
- }
- });
-
- });
-
- /**
- * Room Selection (joinRoom) Client => Server
- * data {roomName: , password: }
- */
- socket.on('joinRoom', function(data)
- {
- console.log(p.name + " joined room " + data.roomName);
-
-
- if(rooms[data.roomName] != null && rooms[data.roomName].canJoin(data.password))
- {
- p.room = rooms[data.roomName];
- rooms[data.roomName].addUser(p);
-
- console.log("user joined room");
- }
- else
- {
- socket.emit('joinFailed', 'Failed connecting to room');
- }
- //console.log(rooms);
- });
-
- /**
- * data -- literally a string
- */
- socket.on('submitWord', function(data)
- {
- console.log("submitWord called");
-
- p.selectWord(data).then(function(score)
- {
- p.roundScore = score;
- p.score += score;
- p.submission = data;
- p.room.update();
- })
- });
-
- //Whenever someone disconnects
- socket.on('disconnect', function ()
- {
- console.log('A user disconnected');
-
- if(rooms[p.name] != null)
- {
- rooms[p.name] = null;
- }
-
- //leave the room
- if(p.room != null)
- {
- p.room.removeUser(p);
- }
-
- //players[p.name] = null;
- delete players[p.name];
-
- });
- });
-
- http.listen(PORT, function()
- {
- console.log('listening on *:3000');
- });
|