Initial server

This commit is contained in:
Andrew 2023-03-02 03:59:29 +07:00
commit 481d119d3b
4 changed files with 681 additions and 0 deletions

99
index.js Normal file
View 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');
});