1
resposta

Receber mensagens dinamicamente

Como faria para trabalhar com chanels por exemplo ter um message um notificaiton

  ws.addEventListener('message', message => {
       let msg = JSON.parse(message.data)
        const div = document.createElement('div')
        div.textContent = `${msg.user}: ${msg.message}`
        output.append(div);
    })

  ws.addEventListener('notifdication', message => {
       let msg = JSON.parse(message.data)
        const div = document.createElement('div')
        div.textContent = `${msg.user}: ${msg.message}`
        output.append(div);
    })
1 resposta

Olá Átila,

Então, isso foge um pouco da funcionalidade do Websocket e entra mais na sua lógica.

O Websocket como servidor e cliente geralmente possui 4 eventos: abertura de conexão, encerramento de conexão, mensagem, erro.

Tudo que se envie, independente da direção, é um evento de mensagem.

Para implementar canais, salas privadas, etc. É por sua conta. Você precisa criar um padrão de mensagem, por exemplo em JSON e tratar isso.

Para criar canais, por exemplo, no seu servidor quando alguem se conecta você não vai colocar a conexão em uma lista com todas conexões, você precisaria criar uma lista para cada canal, por exemplo. Assim quando a mensagem for pra um canal especifico, você interage com apenas essa lista.

Ao mesmo tempo que no frontend, você precisa entender qual o destino daquela mensagem e tratar adequadamente.

Um exemplo famoso de biblioteca que resolve esse problema (salas, canais, etc) é Socket.io. Ela possui oficialmente servidor apenas em Node. Mas ele disponibiliza de forma simples a possibilidade de criar canais, salas, etc. No fundo ela utiliza WebSocket, mas abstrai todas esses recursos e te entrega de forma facilitada. Pode dar uma olhada para entender um pouco melhor sobre o assunto.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software