const WebSocket = require('ws');
const db = require('nedb');
const wss = new WebSocket.Server({ port: 8080 });
const users = new db('users.db');
wss.on('connection', (ws) => {
ws.on('message', (message) => {
const data = JSON.parse(message);
switch (data.type) {
case 'login': {
users.findOne({ username: data.username, password: data.password }, (err, user) => {
if (user) { ws.send(JSON.stringify({ type: 'login_success' })); }
else { ws.send(JSON.stringify({ type: 'login_failed' })); }
});
break;
}
case 'register': {
users.insert({ username: data.username, password: data.password }, (err, doc) => { ws.send(JSON.stringify({ type: 'registered' })); });
break;
}
case 'message': {
wss.clients.forEach((c) => { if (c !== ws) c.send(JSON.stringify({ type: 'message', user: ws.id, text: data.text })); });
break;
}
default: { break; }
}
});
});