React 中的 gRPC 流式传输未按预期工作
gRPC Streaming In React Not Working As Expected
我正在尝试在我的 React 应用程序中测试 gRPC 流。虽然我遇到了一些麻烦。
我们已经在 bloom 中测试了我们的流式传输,它每 2 秒成功地流式传输一个事件,最多 8 个流。
然而,当我在我的 React 应用程序中尝试时,流开始,然后在相当长的一段时间内没有任何反应(大约等于完成流式传输所有数据所需的时间),然后它只注销所有立即获取数据。
这是我设置组件的方式:
const MyComponent = () => {
const startStream = () => {
console.log('stream start')
const streamer = myService.testStreaming(new Empty(), {})
streamer.on('error', err => console.log({ err }))
streamer.on('status', status => console.log({ status }))
streamer.on('data', response => console.log(response.toObject()))
streamer.on('end', () => console.log('stream end'))
}
useEffect(() => {
startStream()
}, [])
return null
}
如上所述,我的输出是 stream start
wait +- 15 seconds then 8 lines of responses
.
如前所述,在 bloom 中,它按预期每 2 秒成功发送一次新流。不像在我的 React 应用程序中,它只是等待很长时间,然后立即触发 on data
回调 8 次。
在我的“网络”选项卡中,StreamEvents 也只是等待启动 +- 15 秒。
您需要确保您使用的是 grpc-web 的文本模式,因为二进制格式目前不支持正确的流式传输:
https://github.com/grpc/grpc-web/issues/344#issuecomment-433288348
我正在尝试在我的 React 应用程序中测试 gRPC 流。虽然我遇到了一些麻烦。 我们已经在 bloom 中测试了我们的流式传输,它每 2 秒成功地流式传输一个事件,最多 8 个流。
然而,当我在我的 React 应用程序中尝试时,流开始,然后在相当长的一段时间内没有任何反应(大约等于完成流式传输所有数据所需的时间),然后它只注销所有立即获取数据。
这是我设置组件的方式:
const MyComponent = () => {
const startStream = () => {
console.log('stream start')
const streamer = myService.testStreaming(new Empty(), {})
streamer.on('error', err => console.log({ err }))
streamer.on('status', status => console.log({ status }))
streamer.on('data', response => console.log(response.toObject()))
streamer.on('end', () => console.log('stream end'))
}
useEffect(() => {
startStream()
}, [])
return null
}
如上所述,我的输出是 stream start
wait +- 15 seconds then 8 lines of responses
.
如前所述,在 bloom 中,它按预期每 2 秒成功发送一次新流。不像在我的 React 应用程序中,它只是等待很长时间,然后立即触发 on data
回调 8 次。
在我的“网络”选项卡中,StreamEvents 也只是等待启动 +- 15 秒。
您需要确保您使用的是 grpc-web 的文本模式,因为二进制格式目前不支持正确的流式传输:
https://github.com/grpc/grpc-web/issues/344#issuecomment-433288348