背景:我的 API 正在连接到我无法控制的另一台服务器上的流端点(这里的细节不是很重要)。当流进来时,我将流式块代理到浏览器。浏览器通过
Fetch
+ 异步迭代器访问我的 API
问题:我正在代理的流端点不能保证保持成功连接或没有错误(它可能超时,下游调用可能失败等)问题:向前端发出中流发生错误信号的最佳方式是什么。我想在关闭连接之前在最后一个块中发送一个序列化错误作为 JSON,但我发现这个解决方案有点老套,想知道是否有更好的方法来做到这一点。最好是遵循标准惯例的东西。
我不是特别喜欢的可能方法的例子:
let myStreamResponse: AxiosResponse<NodeJS.ReadableStream>;
let myStream: NodeJS.ReadableStream;
try {
myStreamResponse = await streamingClient.streamSomeStuff(payload);
myStream = chatStreamResponse.data;
} catch (error) {
return res.status(500).send('It isnt working man');
}
myStream.on('error', (error) => {
const streamError = new MyStreamError('Something broke');
errorTransport.error(streamError);
res.write(serializeError(streamError)));
return res.end();
});
// Etc, etc.