From afeda69313e0250d654986ba0203974c56b30670 Mon Sep 17 00:00:00 2001 From: Florrie Date: Wed, 15 Jul 2020 21:20:39 -0300 Subject: basic command log implementation --- socket.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'socket.js') diff --git a/socket.js b/socket.js index aae1504..12d08af 100644 --- a/socket.js +++ b/socket.js @@ -145,6 +145,12 @@ function validateCommand(command) { typeof command.queuePlayer === 'string' && typeof command.time === 'number' ) + case 'set-nickname': + return ( + typeof command.nickname === 'string' && + command.nickname.length >= 1 && + command.nickname.length <= 12 + ) case 'set-pause': return ( typeof command.queuePlayer === 'string' && @@ -219,6 +225,8 @@ export function makeSocketServer() { server.on('connection', socket => { sockets.push(socket) + let nickname = '(Unnamed)' + socket.on('close', () => { if (sockets.includes(socket)) { sockets.splice(sockets.indexOf(socket), 1) @@ -236,6 +244,7 @@ export function makeSocketServer() { } command.sender = 'client' + command.senderNickname = nickname if (!validateCommand(command)) { return @@ -294,6 +303,12 @@ export function makeSocketServer() { readyToResume[command.queuePlayer] = [] } + // If it's a 'set-nickname' command, save the nickname. + + if (command.code === 'set-nickname') { + nickname = command.nickname + } + // Relay the command to client sockets besides the sender. const otherSockets = sockets.filter(s => s !== socket) @@ -332,6 +347,11 @@ export function makeSocketClient() { client.sendCommand = function(command) { const data = serializeCommandToData(command) client.socket.write(data + '\n') + client.emit('sent-command', command) + } + + client.setNickname = function(nickname) { + client.sendCommand({code: 'set-nickname', nickname}) } client.socket.on('data', perLine(line => { @@ -363,7 +383,15 @@ export function attachBackendToSocketClient(backend, client, { backend.setAlwaysStartPaused(true) + function logCommand(command) { + const nickname = command.sender === 'server' ? 'the server' : command.nickname + backend.showLogMessage(`${nickname} sent ${command.code}!`) + } + + client.on('sent-command', logCommand) + client.on('command', async command => { + logCommand(command) switch (command.sender) { case 'server': switch (command.code) { -- cgit 1.3.0-6-gf8a5