freeCodeCamp/curriculum/challenges/spanish/06-information-security-and.../advanced-node-and-express/communicate-by-emitting.spa...

3.2 KiB

id title challengeType videoUrl localeTitle
589fc831f9fc0f352b528e75 Communicate by Emitting 2 Comunicar emitiendo

Description

Como recordatorio, este proyecto se está construyendo sobre el siguiente proyecto de inicio en Glitch , o clonado desde GitHub . Emit es la forma más común de comunicación que utilizará. Cuando emite algo del servidor a 'io', envía el nombre y los datos de un evento a todos los sockets conectados. ¡Un buen ejemplo de este concepto sería emitir el conteo actual de usuarios conectados cada vez que un nuevo usuario se conecte!
Comience agregando una variable para hacer un seguimiento de los usuarios justo antes de que esté escuchando las conexiones. var currentUsers = 0; Ahora, cuando alguien se conecta, debe incrementar el conteo antes de emitir el conteo, por lo que deseará agregar el incrementador dentro de la escucha de conexión. ++currentUsers; Finalmente, después de incrementar el conteo, debe emitir el evento (aún dentro del oyente de conexión). El evento debe denominarse 'cuenta de usuarios' y los datos solo deben ser los 'usuarios actuales'. io.emit('user count', currentUsers);
¡Ahora puede implementar una manera para que su cliente escuche este evento! De manera similar a escuchar una conexión en el servidor, usará la palabra clave on .
 socket.on ('cuenta de usuario', función (datos) {
  console.log (datos);
}); 
¡Ahora intente cargar su aplicación y autenticar y debería ver en la consola de su cliente '1' que representa el conteo actual de usuarios! Intente cargar más clientes y autenticar para ver cómo aumenta el número. Envía tu página cuando creas que lo has hecho bien.

Instructions

Tests

tests:
  - text: currentUsers está definido
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js").then(data => {assert.match(data, /currentUsers/gi, "You should have variable currentUsers defined");}, xhr => { throw new Error(xhr.statusText); })'
  - text: El servidor emite el conteo de usuarios actual en cada nueva conexión
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /io.emit.*("|")user count("|").*currentUsers/gi, "You should emit "user count" with data currentUsers"); }, xhr => { throw new Error(xhr.statusText); })'
  - text: Tu cliente está escuchando el evento 'cuenta de usuario'
    testString: 'getUserInput => $.get(getUserInput("url")+ "/public/client.js") .then(data => { assert.match(data, /socket.on.*("|")user count("|")/gi, "Your client should be connection to server with the connection defined as socket"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required