JSFiddle - React, Tailwind, and code Playground
JavaScript
var io = require('socket.io').listen(8080);
rooms = [];
boards = [];
emptyBoard = [
['', '', ''],
['', '', ''],
['', '', '']
];
io.on('connection', function (socket) {
socket.on('createRoom', function(data){
console.log(data);
// name p1 p1 sign p2 sign bet prepared turn plays
rooms[data.name] = [data.name, data.user,'X', '','O', data.bet, 0, 1, 0];
// Initalize board.
boards[data.name] = emptyBoard;
// Send user to his room.
socket.emit('roomCreated', {id: data.name});
});
// Room doesnt exists.
socket.on('existsRoom', function(data){
if(rooms[data.id] == undefined) socket.emit('kill');
});
socket.on('enterGame', function(data){
// Append user to room.
if(rooms[data.rId][1] != data.user) rooms[data.rId][3] = data.user;
// To the channel.
socket.room = data.rId;
socket.join(data.rId);
io.sockets.in(data.rId).emit('getRoomInfo', {room:rooms[data.rId]});
console.log("AVAILABLE ROOMS: "+rooms);
// Send notification to all in room.
//socket.broadcast.emit('notification');
});
socket.on('prepared', function(data){
if(rooms[data.id][6] == 1){
io.sockets.in(data.id).emit('gameReady');
console.log("readyy");
}else rooms[data.id][6]++
});
socket.on('addClick', function(data){
turn = rooms[data.id][7];
userTurn = rooms[data.id][turn];
// Is your turn?
if(userTurn == data.user){
// Add click to table with his sign.
boards[data.id][data.y][data.x] = rooms[data.id][(turn+1)];
// Sum 1 to plays counter.
rooms[data.id][8]++;
console.log(data.id);
io.sockets.in(data.id).emit('getBoard', {b: boards[data.id]});
// Change turn.
if(turn == 1) rooms[data.id][7]=3;
else if(turn == 3) rooms[data.id][7]=1;
}else{
// Not your turn.
socket.emit('notYourTurn');
}
});
/*socket.room = "room1";
socket.join(socket.room);
console.log(socket.room);
socket.broadcast.to("room1").emit('hello', 'wwdwdw');*/
});