套接字无法在POST内部发出

时间:2019-01-17 05:16:02

标签: node.js reactjs rest sockets

套接字无法在POST端点内部发出。

socket.emit(“ message”,messageArr);

此POST不发出任何套接字数据。我试图发送一些虚拟数据,但它不起作用。 但是当我在POST之外使用它时,数据输入没有问题。

我的想法是,每次进入POST时,我都需要向FE发送消息。因为它是Twilio(sms)的Webhook。

 app.post("/twilio", (req, res) => {
        if (messageArr.number === req.body.To) {
          try {
            messageArr.body.push({ id: "client", text: req.body.Body });
          } finally {
            socket.emit("message", messageArr);
            console.log("Message Array", messageArr);
          }
        } else {
          messageArr = {
            number: req.body.To,
            body: [
              {
                id: "client",
                text: req.body.Body
              }
            ]
          };
          socket.emit("message", messageArr);
          console.log("Emit message array", messageArr);
        }

1 个答案:

答案 0 :(得分:0)

您的调用套接字在回调内,因此它无法找到对其的内存引用,因此请在app.post上方声明一个var并对其进行调用,以便您可以如下所示对其进行访问。

var _socket = socket;
app.post("/twilio", (req, res) => {
    if (messageArr.number === req.body.To) {
      try {
        messageArr.body.push({ id: "client", text: req.body.Body });
      } finally {
        _socket.emit("message", messageArr);
        console.log("Message Array", messageArr);
      }
    } else {
      messageArr = {
        number: req.body.To,
        body: [
          {
            id: "client",
            text: req.body.Body
          }
        ]
      };
      _socket.emit("message", messageArr);
      console.log("Emit message array", messageArr);
    }