我有来自Db的流,并且正在通过HTTP(请求)将其分散到许多HTTP服务器。
要拆分此流,我使用passThrough
一切正常,但是当事件被调用时,我不知道哪个流发出它。
有什么解决方案可以识别该流吗?
我正在使用错误,结束,数据和响应事件。
作为回应,我有关于主机的信息,但最重要的是在错误eventListener中识别它。
const stream = await getDataStream(id);
const passThrough = new PassThrough();
stream.pipe(objectToString).pipe(passThrough);
for (let host of hostsList) {
startedRequestsCount++;
host.stream
.on('error', errorHandler)
.on('data', dataHandler)
.on('response', responseHandler)
.on('end', resolveAfterAllRequests);
passThrough.pipe(host.stream);
}
我对此解决方案有很多疑问,但是目前,它正在起作用。 问题是当我收到错误消息并想知道哪个主机发生故障时。
奖励问题:
如果我通过HTTP进行流传输,我可以处理背压问题吗?
答案 0 :(得分:1)
在定义处理程序时,请使用curring获取其他流参数:
const errorHandler = stream => error => {
console.log(stream, error);
};
然后煮咖喱:
host.stream
.on('error', errorHandler(host.stream));
确保您可以使用该模式传递多个参数。