mirror of
https://github.com/mizanxali/uno-online
synced 2025-12-08 03:03:27 +00:00
Working two-player game ready!
This commit is contained in:
32
server.js
32
server.js
@@ -2,6 +2,7 @@ const express = require('express')
|
||||
const socketio = require('socket.io')
|
||||
const http = require('http')
|
||||
const cors = require('cors')
|
||||
const { addUser, removeUser, getUser, getUsersInRoom } = require('./users')
|
||||
|
||||
const PORT = process.env.PORT || 5000
|
||||
|
||||
@@ -12,18 +13,41 @@ const io = socketio(server)
|
||||
app.use(cors())
|
||||
|
||||
io.on('connection', socket => {
|
||||
console.log('connection made')
|
||||
socket.on('join', (payload, callback) => {
|
||||
let numberOfUsersInRoom = getUsersInRoom(payload.room).length
|
||||
|
||||
const { error, newUser} = addUser({
|
||||
id: socket.id,
|
||||
name: numberOfUsersInRoom===0 ? 'Player 1' : 'Player 2',
|
||||
room: payload.room
|
||||
})
|
||||
|
||||
if(error)
|
||||
return callback(error)
|
||||
|
||||
socket.join(newUser.room)
|
||||
|
||||
io.to(newUser.room).emit('roomData', {room: newUser.room, users: getUsersInRoom(newUser.room)})
|
||||
socket.emit('currentUserData', {name: newUser.name})
|
||||
callback()
|
||||
})
|
||||
|
||||
socket.on('initGameState', gameState => {
|
||||
io.emit('initGameState', gameState)
|
||||
const user = getUser(socket.id)
|
||||
if(user)
|
||||
io.to(user.room).emit('initGameState', gameState)
|
||||
})
|
||||
|
||||
socket.on('updateGameState', gameState => {
|
||||
io.emit('updateGameState', gameState)
|
||||
const user = getUser(socket.id)
|
||||
if(user)
|
||||
io.to(user.room).emit('updateGameState', gameState)
|
||||
})
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
console.log('connection lost')
|
||||
const user = removeUser(socket.id)
|
||||
if(user)
|
||||
io.to(user.room).emit('roomData', {room: user.room, users: getUsersInRoom(user.room)})
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user