Initial server
This commit is contained in:
commit
481d119d3b
4 changed files with 681 additions and 0 deletions
99
index.js
Normal file
99
index.js
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
const express = require('express');
|
||||
const app = express();
|
||||
const http = require('http');
|
||||
const server = http.createServer(app);
|
||||
const { Server, Socket } = require("socket.io");
|
||||
const { instrument } = require("@socket.io/admin-ui");
|
||||
const io = new Server(server);
|
||||
|
||||
class Client {
|
||||
constructor(login, password) {
|
||||
this.login = login;
|
||||
this.password = password;
|
||||
}
|
||||
}
|
||||
|
||||
class Game {
|
||||
constructor(id, player1, player2) {
|
||||
this.id = id;
|
||||
this.player1 = player1;
|
||||
this.player2 = player2;
|
||||
this.turn = 1;
|
||||
this.board = [
|
||||
[0, 0, 0],
|
||||
[0, 0, 0],
|
||||
[0, 0, 0]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
/** @type {Client[]} */
|
||||
let registeredClients = [];
|
||||
|
||||
/** @type {Map<Socket, Client>} */
|
||||
let onlineClients = new Map();
|
||||
|
||||
let games = [];
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.send('<h1>Hello world</h1>');
|
||||
});
|
||||
|
||||
io.on('connection', (socket) => {
|
||||
console.log('someone connected');
|
||||
|
||||
socket.on('register', (login, password) => {
|
||||
console.log('user send register with login: ' + login + ' and password: ' + password);
|
||||
if (login.length < 3 || login.length > 20 || password.length < 3 || password.length > 20) {
|
||||
socket.emit('register', false, 'Login or password is too short or too long');
|
||||
console.log('user tried to register with too short or too long login or password');
|
||||
return;
|
||||
}
|
||||
if (registeredClients.find(client => client.login === login)) {
|
||||
socket.emit('register', false, 'User with this login already exists');
|
||||
console.log('user tried to register with existing login');
|
||||
return;
|
||||
}
|
||||
registeredClients.push(new Client(login, password));
|
||||
onlineClients.set(socket, new Client(login, password));
|
||||
socket.emit('register', true, 'User registered successfully');
|
||||
console.log('user registered successfully');
|
||||
});
|
||||
|
||||
socket.on('login', (login, password) => {
|
||||
console.log('user send login with login: ' + login + ' and password: ' + password);
|
||||
if (login.length < 3 || login.length > 20 || password.length < 3 || password.length > 20) {
|
||||
socket.emit('login', false, 'Login or password is too short or too long');
|
||||
console.log('user tried to login with too short or too long login or password');
|
||||
return;
|
||||
}
|
||||
if (!registeredClients.find(client => client.login === login)) {
|
||||
socket.emit('login', false, 'User with this login does not exist');
|
||||
console.log('user tried to login with non existing login');
|
||||
return;
|
||||
}
|
||||
if (registeredClients.find(client => client.login === login && client.password !== password)) {
|
||||
socket.emit('login', false, 'Wrong password');
|
||||
console.log('user tried to login with wrong password');
|
||||
return;
|
||||
}
|
||||
onlineClients.set(socket, new Client(login, password));
|
||||
socket.emit('login', true, 'User logged in successfully');
|
||||
});
|
||||
|
||||
socket.on('disconnect', () => {
|
||||
if (onlineClients.has(socket)) {
|
||||
console.log('user ' + onlineClients.get(socket).login + ' disconnected');
|
||||
} else {
|
||||
console.log('anonymous disconnected');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
instrument(io, {
|
||||
auth: false
|
||||
});
|
||||
|
||||
server.listen(9800, () => {
|
||||
console.log('listening on *:9800');
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue