From 2d57c50ea1f3fbddc72b2d97a50668e010998bd3 Mon Sep 17 00:00:00 2001 From: Benjamin Kyd Date: Wed, 3 Mar 2021 19:33:02 +0000 Subject: [PATCH] client identify --- server/src/game-registrar.js | 12 +++++++++++- server/src/socketserver.js | 11 ++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/server/src/game-registrar.js b/server/src/game-registrar.js index f3bf0bc..a75cecc 100644 --- a/server/src/game-registrar.js +++ b/server/src/game-registrar.js @@ -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'; } diff --git a/server/src/socketserver.js b/server/src/socketserver.js index 0092026..9f1747b 100644 --- a/server/src/socketserver.js +++ b/server/src/socketserver.js @@ -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); }