【发布时间】:2020-07-21 16:43:51
【问题描述】:
我正在尝试构建一个基本的发布/订阅事件发射器,但我无法理解如何将带有有效负载的传入事件通过管道传输到所有事件的订阅者。这就是我所拥有的:
app.post("/events", (req, res) => {
const { type } = req.body;
if (!type) {
res.status(404).send(`no event found`);
return;
}
if (!eventTypeToUrls[type]) {
res.status(404).send(`no event ${type} subscribed to`);
return;
}
let count = 0;
const urls = eventTypeToUrls[type];
urls.forEach((url) => {
console.log("sending payload to >>", url);
const writeStream = http.request(
url + "/events",
{ method: "post" },
() => {
count += 1;
if (count === urls.length) {
res.status(201).send("ok");
}
}
);
writeStream.on("error", (e) => res.status(401).send(e));
req.pipe(writeStream);
});
});
我看到我可能在非管道设置中需要使用序列化的有效负载调用 res.write,但由于我是从可读流管道到可写流,我不确定具体如何改变。我想我也不需要打电话给res.end。谢谢。
【问题讨论】:
-
澄清一下 - 您想发送多个 http 请求(使用传递给
POST /events的请求负载)?
标签: node.js