caio-ribeiro-pereira/livro-nodejs

Join na Sala

Closed this issue · 1 comments

Ola, notei que no livro você não faz menção do:

socket.emit('join',sala);

no lado cliente (a versão que tenho do livro não sei se é a mais atual, mas foi a do ano passado), vi que você já corrigiu esse erro em seu repositório esse ano, mas essa alteração será refletida no livro?
outra pergunta é: por que somente quando o usuário manda a primeira mensagem no bate papo que é atualizado o link para ele entrar na sala, ao invés atualizar quando ele clicasse em conversar? segundo o trecho de código a seguir retirado do seu repositório:

arquivo: chat/index.ejs

var enviar = function() {
    var msg = document.getElementById('mensagem');
    socket.emit('send-server', msg.value);
    msg.value = '';
  };

arquivo: sockets/chat.js

client.on('send-server', function (msg) {
      var sala = session.sala
        , data = {email: usuario.email, sala: sala};
      msg = "<b>"+usuario.nome+":</b> "+msg+"<br>";
      redis.lpush(sala, msg);
      client.broadcast.emit('new-message', data);
      sockets.in(sala).emit('send-client', msg);
    });

arquivo: contatos/notify_script.ejs

socket.on('new-message', function(data) {
    var opts = {el: 'notify_' + data.email
              , msg: 'Mensagem'
              , classes: 'label label-important'};
    notify(opts);
    var chat = document.getElementById('chat_' + data.email);
    chat.href += '?sala=' + data.sala;
  });

Desde já agradeço pela atenção 👍

Olá, obrigado pelo report, vou analisar se no livro esta faltando o que você passou pois acredito que já tinha corrigido isso, mas de qualquer forma darei uma olhada sim e se estiver faltando vou corrigir isso.

Sobre a outra pergunta, o motivo de atualizar o link do outro usuário, após o usuário mandar uma mensagem e não quando ele entra na sala, é porque isso previne que um usuário entre (atualiza o link) e saia (link atualizado, porém sem utilidade) da sala sem ao menos mandar uma mensagem no chat.