Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const http = require('http');
  2. const express = require('express');
  3. const socketio = require('socket.io');
  4. const readline = require('readline');
  5.  
  6. const game = require('./game'); // this imports the RpsGame class from the rps-game.js file
  7.  
  8. const app = express();
  9. const clientPath = `${__dirname}/../client`;
  10. console.log(`Serving static from ${clientPath}`);
  11. app.use(express.static(clientPath));
  12. const server = http.createServer(app);
  13. const io = socketio(server);
  14.  
  15. var roomno = 1;
  16. players = [];
  17.  
  18. io.on('connection', (sock) => {
  19.    
  20.     sock.on('disconnect', function(data) {
  21.         sock.leave(players.roomNumber);
  22.         players.splice(players.indexOf(sock.username), 1);
  23.         connections.splice(connections.indexOf(sock), 1);
  24.         console.log('Disconnected: %s sockets connected', players.length);
  25.         updateUsernames();
  26.         checkGameBtn();
  27.     });
  28.  
  29.     // new user
  30.     sock.on('new user', function(data) {
  31.         sock.username = data;
  32.          
  33.         //Increase roomno when 2 clients are present in a room.
  34.         if(io.nsps['/'].adapter.rooms["room"+roomno] && io.nsps['/'].adapter.rooms["room"+roomno].length >= 8) {
  35.             roomno++;
  36.         }
  37.         sock.join("room"+roomno);
  38.         sock.roomNumber = "room"+roomno;
  39.        
  40.         players.push( {playerId: sock.id, username: sock.username, roomNumber: sock.roomNumber, score: 6} );
  41.         //var allConnectedClients = Object.keys(io.sockets.connected); // returns ids of all connected users
  42.         //var clientsCount = io.engine.clientsCount ; // This will return the count of connected clients
  43.  
  44.         console.log('Connected: %s sockets connected', players.length);
  45.         updateUsernames(players);
  46.         checkGameBtn();
  47.         //Send this event to everyone in the room.
  48.         io.sockets.in("room"+roomno).emit('connectToRoom', "You are in room no. "+roomno);
  49.     });
  50.  
  51.     function updateUsernames() {
  52.         for (var i=0; i<players.length;i++) {
  53.             var roomPlayers = players.filter(function(roomPlayer) {
  54.                 return roomPlayer.roomNumber === players[i].roomNumber;
  55.             });
  56.             io.sockets.in(players[i].roomNumber).emit('get users', roomPlayers);
  57.         }
  58.     }
  59.  
  60.     function checkGameBtn() {
  61.         for (var i=0; i<players.length;i++) {
  62.             var numOfPlayers = players.filter(function(numPlayer) {
  63.                 return numPlayer.roomNumber === players[i].roomNumber;
  64.             });
  65.             io.sockets.in(players[i].roomNumber).emit('startGameBtn', numOfPlayers);
  66.         }
  67.     }
  68.  
  69.     sock.on('message', (text) => {
  70.         io.emit('message', text);
  71.     });
  72. });
  73.  
  74. server.on('error', (err) => {
  75.     console.error('Server error: ', err);
  76. });
  77.  
  78. server.listen(3333, () => {
  79.     console.log('RPS started on 3333');
  80. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement