gRP C потоковая передача в действии не работает, как ожидалось - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь проверить потоковую передачу gRP C в своем приложении реакции. Хотя у меня проблемы. Мы проверили нашу потоковую передачу в цвету, и она успешно передает событие каждые 2 секунды до 8 потоков.

Однако, когда я пробую его в своем приложении React, поток запускается, тогда в течение некоторого времени ничего не происходит ( примерно равное времени, которое требуется для завершения sh потоковой передачи всех данных), затем он только регистрирует все данные одновременно.

Вот как я настроил свой компонент:

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 секунд затем 8 lines of responses.

Как уже упоминалось, в цвету он успешно отправляет через новый поток каждый 2 секунды, как и ожидалось. В отличие от моего приложения React, где оно просто долго ждет, а затем немедленно запускает обратный вызов on data.

Bloom

Console

На моей вкладке «Сеть» StreamEvents также находится в состоянии ожидания запуска в течение + - 15 секунд.

1 Ответ

1 голос
/ 07 марта 2020

Необходимо убедиться, что вы используете текстовый режим grp c -web, поскольку двоичный формат в настоящее время не поддерживает правильную потоковую передачу:

https://github.com/grpc/grpc-web/issues/344#issuecomment -433288348

...