Reactjs gRPC在React中的数据流未按预期工作

Reactjs gRPC在React中的数据流未按预期工作,reactjs,streaming,grpc,grpc-web,Reactjs,Streaming,Grpc,Grpc Web,我正在尝试在我的react应用程序中测试gRPC流。虽然我有一些麻烦。 我们已经在bloom中测试了流媒体,它成功地每2秒流一个事件,最多8个流 然而,当我在React应用程序中尝试它时,流启动,然后在相当长的一段时间内没有发生任何事情(大约等于完成所有数据流所需的时间),然后它一次只注销所有数据 以下是我设置组件的方式: const MyComponent = () => { const startStream = () => { console.log('stream

我正在尝试在我的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
}
如上所述,我的输出是
流开始
等待+-15秒,然后
8行响应

如前所述,在bloom中,它按预期每2秒成功发送一个新流。与我的React应用程序不同,它只是等待很长时间,然后立即触发数据上的
回调8次


在“我的网络”选项卡中,StreamEvents也处于等待启动状态+-15秒。

您需要确保使用的是grpc web的文本模式,因为二进制格式当前不支持正确的流式传输:


问题描述中没有提到-您使用的是哪种grpc web代理?据我所知,只是默认的。是的,这不是问题所在,我们已经在使用
mode=grpcwebtext
啊,对了,我们的protos中的JS输出仍然设置了二进制模式。我的错。。。谢谢你把它整理好了@BarryMichaelDoyle你能帮我理解你是如何和在哪里改变它的,这样protos就没有二进制模式了吗?谢谢-我在protoc中做的-我=。。。。对于我的生成脚本,我使用以下协议命令:protoc-I=。src/ping\u pong.proto--js\u out=import\u style=commonjs:--grpc-web\u out=import\u style=commonjs,mode=grpcwebtext:。