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

Descrição

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 emiti-la, 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 'user count' e os dados devem ser apenas 'currentUsers'. 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 recarregar seu aplicativo e autenticar e você verá no seu console '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.

Instruções

Testes

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

Solução

// solution required