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

3.1 KiB

id title challengeType videoUrl localeTitle
589fc831f9fc0f352b528e75 Communicate by Emitting 2 Comunique-se emitindo

Description

Como lembrete, este projeto está sendo construído sobre o seguinte projeto inicial no Glitch , ou clonado a partir do GitHub . Emit é o modo mais comum de comunicação que você usará. Quando você emite algo do servidor para 'io', você envia o nome e os dados de um evento para todos os soquetes conectados. Um bom exemplo desse conceito seria emitir a contagem atual de usuários conectados cada vez que um novo usuário se conecta!
Comece adicionando uma variável para acompanhar os usuários antes de onde você está ouvindo as conexões. var currentUsers = 0; Agora, quando alguém se conecta, você deve incrementar a contagem antes de emitir a contagem, assim você desejará adicionar o incrementador dentro do ouvinte de conexão. ++currentUsers; Finalmente, após incrementar a contagem, você deve emitir o evento (ainda dentro do ouvinte de conexão). O evento deve ser chamado de 'contagem de usuários' e os dados devem ser apenas 'usuários atuais'. io.emit('user count', currentUsers);
Agora você pode implementar uma maneira para o seu cliente escutar este evento! Da mesma forma que ouvir uma conexão no servidor, você usará a palavra - chave on .
 socket.on ('user count', function (data) {
  console.log (dados);
}); 
Agora tente carregar seu aplicativo e autenticar e você verá no console do seu cliente '1' representando a contagem atual de usuários! Tente carregar mais clientes e autenticar para ver o número subir. Envie sua página quando achar que está certo.

Instructions

Tests

tests:
  - text: currentUsers é 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: Servidor emite a contagem atual de usuários em cada nova conexão
    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: Seu cliente está ouvindo o evento "contagem de usuários"
    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