2
respostas

Duvida

Boa noite. Deve ser uma duvida besta, mas vamos la..

Estou com uma duvida do por que o codigo a seguir esta sendo executado: (eu sei o que ele faz, mas nao entendo pq é executado) socket.on("texto_editor_clientes", (texto) => { atualizaTextoEditor(texto); });

Pq executa esse codigo se em nenhuma parte ele é exportado ou chamado como uma funcao? Pq o js reconhece e executa essa parte do codigo?

Por ex: em documento.html, chamo documento.js , entao tudo que esta dentro de documento.js sera executado. Em documento. js, chamo a funcao emitirTextoEditor do arquivo "./socket-front-documento.js". Até aí tudo bem. O evento é emitido.

Mas ai chega nessa parte do socket.on que é pra ouvir o retorno do servidor socket, e pq ele é executado sem que o documento.js o chame? Em qual parte do codigo esta a chamada pra executar essa parte do codigo?

Outra coisa.. Acessando o documento.html, carrega o documento.js. Mas automaticamente (antes de eu comecar a digitar e antes da funcao que emite evento ser chamada) já esta abrindo uma conexao socket com o servidor, sendo que o comando para abrir a conexao socket const socket = io(); está no arquivo socket-front-documento.js.

Em que momento o arquivo socket-front-documento.js. foi chamado para executar o codigo const socket = io(); ??

2 respostas

.................

Oi Thiago, bom dia! Como vai?

O código que você mencionou, socket.on("texto_editor_clientes", (texto) => { atualizaTextoEditor(texto); });, é um exemplo de como o JavaScript lida com eventos e callbacks. Quando você usa socket.on, está se inscrevendo para ouvir um evento específico, neste caso, "texto_editor_clientes". Quando o servidor emite esse evento, a função que você passou como segundo argumento é chamada automaticamente. Por isso, não é necessário chamar essa função manualmente em outro lugar do seu código.

Quanto à sua dúvida sobre a conexão do socket aberta automaticamente, isso acontece porque o arquivo socket-front-documento.js está sendo importado em documento.js. Quando você importa um módulo em JavaScript, o código dentro dele é executado imediatamente. Assim, a linha const socket = io(); é executada assim que socket-front-documento.js é importado, estabelecendo a conexão com o servidor.

Espero ter ajudado e bons estudos!

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