【问题标题】:Browser process streamed data once all streamed data is received. Does browser stops server side streaming?一旦接收到所有流数据,浏览器就会处理流数据。浏览器是否停止服务器端流式传输?
【发布时间】:2021-12-08 20:05:44
【问题描述】:

我有 python 服务器,它具有 grpc 服务和 grpc 网关。从 python 服务器端,它使用 yield 发送分块数据。我可以看到数据是使用wireshark一一发送的。

我在 UI 端使用 Angular 框架。发出请求后,我会立即收到响应 200,一段时间后我会收到全部数据。

但是在浏览器中,一旦收到整个数据,我就会在 http 调用中得到响应。 即使我尝试使用 REST 客户端,响应也会聚集在一起,而不是流式传输。

看起来浏览器只有在收到所有数据后才开始处理。

是否有任何我错过的标题导致了这个问题?

如何解决这个问题?

【问题讨论】:

    标签: angular browser streaming grpc-python


    【解决方案1】:

    (这里是 gRPC 团队的成员 :))

    如果您将 gRPC-Web 与 Envoy 代理一起使用(sample configenvoy.filters.http.grpc_web 过滤器一起使用),则支持 Web 上的服务器端流式传输。

    但我们不确定流如何与gRPC-Gateway 一起工作(假设您正在使用它),因为它似乎正在将响应转换为 JSON。

    您可以检查的一件事是您的 HTTP 响应中的 transfer-encoding 标头,应将其设置为 chunked 才能进行流式传输。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 2013-04-18
      • 2015-07-29
      • 2016-06-24
      • 2011-05-05
      • 2015-09-21
      相关资源
      最近更新 更多