Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

escopo do socket-back

import io from "./server.js";

io.on("connection", (socket)=>{
  console.log("Um cliente se conectou! ID:", socket.id);
  socket.on("url-document", (url_document) => {
    socket.join(url_document);
    socket.on("text_area", (element)=>{
      socket.to(url_document).emit("text_area_client", element); // com socket.broadcast mandar informações para outros clients MENOS ELE MESMO.
    });
  });

  socket.on("disconnect", (reason)=>{
    console.log(`Cliente ${socket.id} desconectado, motivo: ${reason}`);
  });
});

ao invez de modificar as funções do socket-front eu so modifiquei o escopo do "text_area" dentro do escopo do "url-document", funcionou igualmente, porem não sei se é menos eficiente do que mostrado no curso, ou tenha algum problema de lógica que possa dar algum tipo de bug.

1 resposta
solução!

Oi Gabriel! Tudo bem?

Que bom que você conseguiu fazer a modificação e que está funcionando! Vamos lá, vou te ajudar a entender se há algum problema com o que você fez.

No seu código, você colocou o escopo do evento "text_area" dentro do evento "url-document", o que significa que o "text_area" só será registrado após o socket entrar em uma sala específica com socket.join(url_document). Isso pode ser uma abordagem válida, especialmente se você quiser garantir que o evento "text_area" só seja ouvido após o cliente estar em uma sala específica.

Do ponto de vista de eficiência, essa abordagem não deve causar problemas significativos, pois o evento só será registrado quando necessário. Além disso, ao utilizar socket.to(url_document).emit(...), você está garantindo que a mensagem seja enviada apenas para os clientes que estão na mesma sala, o que é exatamente o que você deseja para evitar interferências entre documentos diferentes.

A única coisa que você deve ter em mente é garantir que o evento "url-document" seja sempre emitido antes de qualquer tentativa de emitir "text_area", pois caso contrário, o evento "text_area" não será registrado e, portanto, não funcionará como esperado.

Se o seu código está funcionando conforme esperado e não está causando interferências entre documentos, então parece que você encontrou uma solução que atende às suas necessidades! Sempre é bom testar em diferentes cenários para garantir que não haja comportamentos inesperados.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.