1

我正在尝试在通过套接字连接时从我的分子后端返回一些数据到我的反应前端。我在获取数据方面遇到了挑战,让我特别困惑的是,当我在后端出现错误时,完整的错误会通过套接字返回到前端。但是当我解决错误时,我在前端得到的只是null. 我不清楚为什么我会在错误情况下得到响应,而在null没有错误时得到响应。任何帮助将不胜感激。

这是我在后端的代码。当 'auth.register' 的套接字请求进入时,此函数会触发:

register(ctx) {
  const socketId = ctx.meta.socket.id;
  console.log('socketId: ', socketId);

  const response = {
    status: 'success',
    code: null,
    message: 'Device registered with version 1.0.0.',
    body: { socketId },
    broadcast: false,
    messageId: 'unknown',
    opts: {}
  }

  return response;
},

这是我的前端套接字调用:

io.Socket.on('connect', () => {
  console.log("Connection with the socket gateway established on socket");
  // register
  io.Socket.emit('call', 'auth.register', {
    key: config.key,
    version: `${config.app} ${config.version}`,
    app: config.app,
  }, (res) => {
    console.log('res: ', res);
  });
});

使用这样的代码,res在前端的控制台中等于null.

现在,如果我将后端代码更改为出现错误,如下所示:

register(ctx) {
  const socketId = ctx.meta.socket.id;
  console.log('socketId: ', socketId);

  response = {
    status: 'success',
    code: null,
    message: 'Device registered with version 1.0.0.',
    body: { socketId },
    broadcast: false,
    messageId: 'unknown',
    opts: {}
  }

  return response;
},

完整的错误通过套接字返回,所以在前端控制台中,res是这样的:

{name: "ReferenceError", message: "response is not defined"}

我试图理解为什么,如果后端出现错误,会在前端的套接字调用回调中成功返回,但如果没有错误,我最终得到的只是null.

我在这里想念什么?在这种情况下如何将数据返回到前端?

4

0 回答 0