client identify

This commit is contained in:
Benjamin Kyd
2021-03-03 19:33:02 +00:00
parent 095a0efbc1
commit 2d57c50ea1
2 changed files with 19 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ const Logger = require('./logger.js');
const Server = require('./webserver.js');
const Crypto = require("crypto");
const { CONNREFUSED } = require('dns');
/*
USER OBJECT
@@ -11,6 +12,8 @@ USER OBJECT
ip: ip,
// REGISTERED, CONNECTED, DISCONNECTED, INGAME
state: 'REGISTERED',
// LOBYING, GAME, UNDECIDED
intent: 'LOBYING',
// Doesn't update if state changes
connectionid: 'none',
}
@@ -110,12 +113,19 @@ function UserConnect(userid, connectionid)
{
if (OnlineUsers[userid].state === 'CONNECTED') return 'User Connected';
OnlineUsers[userid].connectionid = connectionid;
OnlineUsers[userid].state = 'CONNECTED';
Logger.info(`SOCKET ${connectionid} IDENTIFIED AS ${userid}`);
return true;
}
function UserDisconnect(userid, connectionid)
function UserDisconnect(userid)
{
if (!OnlineUsers[userid]) return false;
if (OnlineUsers[userid].state === 'DISCONNECTED') return false; // no change
OnlineUsers[userid].state = 'DISCONNECTED';
}

View File

@@ -76,15 +76,20 @@ function ClientIdentify(socket, args)
// TODO: Sort out client intent
const status = Game.Registrar.UserConnect(userid, socket.id);
const status = Game.Registrar.UserConnect(user.uid, socket.id);
if (status === true)
{
socket.emit('identify-success', {connected: true, user: user});
return;
}
else if (status === 'User Connected')
{
err.addError(500, 'Internal Server Error', 'User already connected');
socket.emit('identify-error', err.toError);
return;
} else
{
// TODO: wrong error
err.addError(500, 'Internal Server Error', 'Socket busy');
socket.emit('identify-error', err.toError);
return;
@@ -96,7 +101,7 @@ function HandleDisconnect(socket, args)
Logger.debug(`${socket.id} DISCONNECTED`);
const user = Game.Registrar.GetUserbyConnection(socket.id);
if (!user) return;
Game.Registrar.UserDisconnect(user.id, socket.id);
Game.Registrar.UserDisconnect(user.uid);
}