问题描述
我正在尝试使用rxjs.Observable包装grpc-web服务器流客户端,并且如果服务器返回错误,则能够执行重试。
请考虑以下代码。
{
"hosting": {
"public": "./vuepress/dist","ignore": [
"firebase.json","**/.*","**/node_modules/**"
]
}
}
服务器在(?)发出“错误”之后发出“结束”事件,因此看来我必须从可观察的源中删除“结束”处理程序。
结束/完成视频流的“ Rx-y”方式是什么?
解决方法
对于感兴趣的任何人,我最终都删除了“ end”事件处理程序,并用“ status”替换了它,如果服务器返回一个OK
状态代码(表示流结束),则可观察到的是完成。
new Observable(obs => {
const call = new FooClient("http://localhost:8080").foo(new FooRequest())
call.on("data",data => obs.next(data))
call.on("error",err => obs.error(err))
call.on("status",status: grpcWeb.Status => {
if (status.code == grpcWeb.StatusCode.OK) {
return observer.complete()
}
})
})