Recibo la fuga del emisor de eventos después de usar mi código 10 veces esencialmente. Entiendo que el emisor de eventos predeterminado envía automáticamente una advertencia en la consola. Mi pregunta es ¿qué en este código está creando directamente los detectores de eventos? ¿Es una codificación deficiente de mi parte o es solo cómo se apilan los websockets entre sí?
Voy a explicar un poco el código. Tengo un websocket dentro de otro y pensé que enviaría los datos a una página web que fluye esencialmente de Twitch a un sitio de host local. Sin embargo, si utilizo las palabras clave más de 10 veces, aparece el error. No entiendo lo suficiente sobre WebSockets para entender realmente por qué mi código crea un nuevo oyente con cada mensaje de texto recibido, así que cualquier persona con un poco más de comprensión, ¡ayuda!
Creo que mi problema es similar a este , aunque me está costando conceptualizar mi propio código aquí.
const { paintballShot } = require('./JavaScript/paintballGunFire'); const { readPin } = require('./JavaScript/readPin'); const ws = require('ws'); const express = require('express'); const app = express(); //CONNECT TO TWITCH let client = new ChatClient({ connection: { type: "websocket", secure: true, } }); //connected? client.on("ready", () => console.log("Successfully connected to chat")); client.on("close", (error) => { if (error != null) { console.error("Client closed due to error", error); } }); //create headless websocket const wsServer = new ws.Server({ noServer: true }); wsServer.on('connection', function connection(socket) { //call other websocket connected to Twitch from inside the new websocket client.on("PRIVMSG", (msg, error) => { if (msg.messageText === "right") { socket.send(JSON.stringify(`${msg.displayName}: ${msg.messageText}`)); } if (msg.messageText === "left") { socket.send(JSON.stringify(`${msg.displayName}: ${msg.messageText}`)); } if (msg.messageText === "fire") { socket.send(JSON.stringify(`${msg.displayName}: ${msg.messageText}`)); paintballShot(); } if (msg.messageText === "pin") { readPin(); } process.on('uncaughtException', function (err) { console.log(err); }); }); client.connect(); client.join("channel"); socket.on('message', message => console.log(message)); }); // `server` is a vanilla Node.js HTTP server const server = app.listen(3000); server.on('upgrade', (request, socket, head) => { wsServer.handleUpgrade(request, socket, head, socket => { wsServer.emit('connection', socket, request); }); }); process.on('uncaughtException', function (err) { console.log(err); });Para terminar, la biblioteca que estoy usando (Dank TwitchIRC) tiene un limitador de velocidad de conexión que parece funcionar si lo agregas a tu cliente de chat al principio. Si lo configuro lo suficientemente bajo, dependiendo de los mensajes recibidos de Twitch, finalizará las conexiones igual de rápido, lo que significa que no habrá pérdida de memoria.