2020-01-08 19:24:24 +00:00
|
|
|
// TODO const someSocketLogic = require('./middleware/socketssockets/...');
|
2020-01-21 22:33:40 +00:00
|
|
|
const socketIO = require('socket.io');
|
|
|
|
const io = socketIO({ cookie: false });
|
2020-01-08 19:24:24 +00:00
|
|
|
|
2020-05-12 01:18:42 +00:00
|
|
|
// const gameQueries = require('./data/queries/game');
|
|
|
|
const moveQueries = require('./data/queries/move');
|
2020-01-31 05:03:27 +00:00
|
|
|
const gameServices = require('./services/gameServices');
|
2020-01-24 05:25:08 +00:00
|
|
|
|
2020-05-03 06:22:57 +00:00
|
|
|
io.on('connection', async socket=> {
|
2020-01-26 00:50:18 +00:00
|
|
|
socket.emit('connected', {message: 'socket connected'});
|
2020-05-03 06:22:57 +00:00
|
|
|
socket.on('connect_room', async data => {
|
2020-01-28 06:40:03 +00:00
|
|
|
if (data.user && data.user.email) {
|
|
|
|
delete data.user.email;
|
|
|
|
}
|
2020-05-03 06:22:57 +00:00
|
|
|
const room = data.room;
|
2020-01-30 01:01:46 +00:00
|
|
|
const roomIo = io.of(room);
|
2020-05-03 06:22:57 +00:00
|
|
|
roomIo.on('connection', async socket => {
|
2020-01-28 06:40:03 +00:00
|
|
|
socket.emit('connected')
|
|
|
|
socket.emit('new_user', data);
|
2020-01-30 01:01:46 +00:00
|
|
|
socket.on('connect_game', data => {
|
|
|
|
const game = `game-${data.game.id}`;
|
2020-02-01 04:28:39 +00:00
|
|
|
socket.join(game, async () => {
|
|
|
|
// ! temp
|
2020-05-12 01:18:42 +00:00
|
|
|
const gameRecord = await moveQueries.findGameRecord(data.game.id);
|
|
|
|
console.log(gameRecord)
|
|
|
|
await gameServices.initGame({id: data.game.id, gameRecord})
|
2020-02-01 04:28:39 +00:00
|
|
|
// ! end-temp
|
2020-05-05 06:22:50 +00:00
|
|
|
const { board, ...meta } = await gameServices.getDataForUI(data.game.id);
|
|
|
|
io.of(room).to(game).emit('game_connected', { board, meta });
|
2020-01-30 01:01:46 +00:00
|
|
|
});
|
|
|
|
});
|
2020-05-03 06:22:57 +00:00
|
|
|
socket.on('make_move', async data => {
|
2020-01-31 05:03:27 +00:00
|
|
|
const { user, move, board, game, room } = data;
|
2020-02-01 06:22:43 +00:00
|
|
|
const gameNsp = `game-${data.game.id}`;
|
|
|
|
|
|
|
|
try {
|
2020-05-05 06:22:50 +00:00
|
|
|
const { board, message, ...meta } = await gameServices.makeMove({ id: 1, move });
|
|
|
|
const socketAction = message ? 'error' : 'update_board';
|
2020-02-01 06:22:43 +00:00
|
|
|
socket.join(gameNsp, () => {
|
2020-05-05 06:22:50 +00:00
|
|
|
io.of(room).to(gameNsp).emit(socketAction, { board, meta, message })
|
2020-02-01 06:22:43 +00:00
|
|
|
});
|
|
|
|
}
|
2020-05-03 06:22:57 +00:00
|
|
|
catch (e) {
|
2020-05-05 06:22:50 +00:00
|
|
|
console.log(e)
|
2020-02-01 06:22:43 +00:00
|
|
|
socket.join(gameNsp, () => {
|
2020-05-03 06:22:57 +00:00
|
|
|
io.of(room).to(gameNsp).emit('error', e)
|
2020-02-01 06:22:43 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
}
|
2020-01-31 05:03:27 +00:00
|
|
|
})
|
2020-01-30 01:01:46 +00:00
|
|
|
});
|
2020-01-28 06:40:03 +00:00
|
|
|
})
|
2020-01-26 00:50:18 +00:00
|
|
|
})
|
2020-01-08 19:24:24 +00:00
|
|
|
|
2020-01-21 22:33:40 +00:00
|
|
|
module.exports = {
|
2020-02-01 04:28:39 +00:00
|
|
|
io
|
2020-01-24 05:25:08 +00:00
|
|
|
}
|