Kopie van https://gitlab.com/studieverenigingvia/ict/centurion met een paar aanpassingen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
const express = require("express");
|
|
const socketIO = require("socket.io");
|
|
|
|
const service = require("./service.js");
|
|
const state = require("./state.js");
|
|
|
|
const PORT = 3001;
|
|
|
|
const app = express();
|
|
const server = app.listen(PORT, () => console.log(`Example app listening on port ${PORT}!`));
|
|
const io = socketIO(server);
|
|
|
|
app.get('/', (req, res) => res.send('<pre>' + JSON.stringify(state) + '</pre>'));
|
|
|
|
io.on('connection', socket => {
|
|
const socketId = socket.id;
|
|
|
|
console.log('a user connected', socketId);
|
|
|
|
const lobby = service.joinLobby(socketId);
|
|
socket.join(lobby.name);
|
|
socket.emit('welcome', {lobby: lobby.name});
|
|
|
|
|
|
socket.on('disconnect', (reason) => {
|
|
console.log('Disconnected:', socketId);
|
|
service.leaveLobby(socketId);
|
|
});
|
|
|
|
socket.on('join_lobby', (lobbyId, callback) => {
|
|
console.log(`${socketId} wants to join '${lobbyId}'.`);
|
|
|
|
// Leave current lobby first
|
|
service.leaveLobby(socketId);
|
|
const lobby = service.joinLobby(socketId, lobbyId);
|
|
|
|
socket.join(lobby.name);
|
|
|
|
callback(null, {
|
|
status: 'ok',
|
|
lobby: lobby.name
|
|
});
|
|
});
|
|
}); |