2
respostas

Callback Retornar Documentos não executa

Por alguma razão a callback enviada pelo evento "get_documents" no socket.emit do meu arquivo index-socket.js não executa.

Depurei o código e até onde cheguei o evento está sendo disparado normalmente no servidor. Os documentos estão sendo retornados pelo BD. Porém não executa a callback recebida por parâmetro.

index-socket.js

const socket = io();

socket.emit('get_documents', (documents) => {
  console.log('callback running...');  

});

server-socket.js

import { io } from "./server.js";
import { getDocument, updateDocument, getDocuments } from "./documentsDB.js";

io.on('connection', (socket) => {
  socket.on('get_documents', async (returnDocuments) => {
    const documents = await getDocuments();
    console.log(documents);

    returnDocuments(documents);            
  });

  socket.on('select_document', async (name, returnText) => {
    const document = await getDocument(name);

    if (document) {
      socket.join(document.name);
      returnText(document.text);
    }
  });

  socket.on('text_editor', async ({ text, name }) => {
    const updatedDocument = await updateDocument(name, text);

    if (updatedDocument.modifiedCount) {
      socket.to(name).emit('text_editor', text);
    }
  });
});
2 respostas

Na realidade estava funcionando tudo normal, só que eu estava olhando pro console.log errado. Estava olhando pro console do servidor em vez de olhar para o do cliente. Como estava dando erro em uma função Javascript no front, acabou que não estava enxergando o erro.

Olá Müller, tudo bem?

Fico feliz que a situação foi resolvida, e acabou nem sendo o erro que você havia relatado.

Caso futuramente apareçam mais dúvidas ou impedimentos durante os seus estudos, não hesite em perguntar no fórum, esse é um ótimo lugar para levantar esse tipo de questionamento, além de poder criar networking com os outros alunos.

Grande abraço.