Tengo problemas para entender este código.
Mi confusión está en la línea 8 (server.on). Después de usar server.on, escuchará un evento, pero ¿por qué no se usa server.emit? Y lo que está haciendo el trabajo de server.emit
¿Es obligatorio escribir emit después de on o no?
Por favor, ayúdame a entender este código también.
Gracias. El código está debajo
const http = require('http'); const PORT = 8000; // Using Event Emmiter API const server = http.createServer(); // emits request event // subscribe to it / listen for it / respond to it server.on('request', (req, res) => { res.end(`Welcome`); }); server.listen(PORT);Este es un servidor http. Uno de los eventos que puede escuchar en un servidor http es el evento de request que indica que hay una solicitud http entrante. Puede ver todos los eventos que admite el objeto del servidor http aquí .
Este evento en particular proporciona dos argumentos: los objetos req y res . Para enviar una respuesta al cliente, utilice el objeto de respuesta res . Puede usar res.write() y/o res.end() . Este ejemplo en particular usa res.end('Welcome') para enviar una respuesta de texto simple al cliente.
No hay .emit() porque no es así como funciona el objeto del servidor http. Internamente, usa .emit() para crear eventos sobre los que los oyentes pueden recibir notificaciones, pero cuando estás escuchando un evento, no usas .emit() tú mismo. En su lugar, utiliza los datos que vienen con el evento para actuar adecuadamente para ese evento en particular. En este caso, utiliza los objetos de solicitud y respuesta que se envían con el evento de request .
. Después de usar server.on, escuchará un evento, pero ¿por qué no se usa server.emit?
El propio servidor utiliza server.emit() internamente para desencadenar eventos que puede escuchar.
Y lo que está haciendo el trabajo de server.emit
No está claro lo que esperas aquí. .emit() es un método en un objeto eventEmitter y se llama para desencadenar eventos que otro código puede escuchar. El objeto del servidor http lo usa internamente para desencadenar eventos, pero enviar una respuesta http no tiene nada que ver con el objeto eventEmitter o .emit() . En su lugar, utiliza métodos en el objeto de respuesta para enviar una respuesta http al cliente.
¿Es obligatorio escribir emit después de on o no?
No. Por lo general, no usaría .emit() en un oyente .on() . Pero, realmente depende de cuál sea el evento y cómo se escribe el código que desencadenó el evento. En teoría, podría llamar a .emit() y desencadenar otros eventos en respuesta a un evento entrante, pero eso no es obligatorio y no suele ser así como se hacen las cosas. Por ejemplo, si estuviera escuchando eventos del teclado o eventos de clic del mouse, simplemente actuaría sobre esos eventos (haciendo lo que quisiera en función de los eventos de clic del mouse o del teclado entrantes) y no usaría .emit() para desencadenar más eventos.
Si está familiarizado con la biblioteca socket.io, es una biblioteca que envía respuestas al cliente con .emit() . Entonces escucharía un mensaje entrante con socket.on(...) y enviaría una respuesta al cliente con socket.emit(...) . Pero ese no es un diseño habitual y no es así como funciona el objeto del servidor http. En este caso, la biblioteca socket.io .emit() para hacer algo diferente de lo que normalmente hace con un objeto EventEmitter estándar.