套接字无法在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);
}
答案 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);
}