npm-package-nodejs-utils-lda
Version:
Este projeto tem como fins de criar e abstrair módulos basicos e utilidades para o node js
53 lines (45 loc) • 1.73 kB
JavaScript
const onCommandSendTo = require("./onCommandSendTo.mjs");
const onCommandArp = require("./arp.mjs");
const { broadcast, sendTo } = require("./wsUtils.mjs");
// handleMessage.js
function handleMessage(cliente, data, clientes) {
try {
const parsed = JSON.parse(data.toString());
const msg = parsed.text || "";
switch (parsed.type) {
case "setName":
const newName = parsed.name || cliente.name;
broadcast(clientes,`WSChat [RENAME] Cliente ${cliente.name} agora é ${newName}`);
console.log(`WSChat [RENAME] Cliente agora é ${cliente.name}`);
cliente.name = newName;
break;
case "direct":
const fullMessage = `[DM from ${cliente.name} to ${destino}]: ${msg}`;
const sent = sendTo(clientes, destino, fullMessage); // ✅ CORRIGIDO
if (!sent) {
cliente.send(`[SERVER] Could not deliver message to ${destino}.`);
}
break;
default:
onMessage(cliente, clientes, msg);
break;
}
} catch (e) {
console.log("WSChat [ERROR] Mensagem inválida recebida:", data.toString() + e);
cliente.send("WSCHAT SERVER: PLEASE SEND {type: 'message', text: '...'}");
}
}
function onMessage(cliente, clientes, msg) {
const fullMessage = `[${cliente.name}]: ${msg}`;
if (msg === "/arp") {
onCommandArp(cliente, clientes); // ✅ passa o Set de clientes corretamente
} else if (msg.startsWith("/to ")) {
const sent = onCommandSendTo(cliente, msg, clientes);
if (!sent) {
cliente.send("[SERVER] Failed to send direct message.");
}
} else {
broadcast(clientes, fullMessage);
}
}
export default handleMessage;