为何 gin 的 ctx.Stream 偶尔会延迟输出结果?

为何 gin 的 ctx.stream 偶尔会延迟输出结果?

为何 gin 的 ctx.stream 延迟输出结果?

gin 的 ctx.stream 方法允许开发者通过流式传输方式依次输出响应结果。然而,在某些情况下,ctx.stream 可能会延迟输出结果,直至控制器方法执行完成。

这种情况的产生是因为 gin 启用了压缩输出中间件。当启用了该中间件时,ctx.stream 函数将被覆盖,而不会立即对其进行输出。

为了在启用压缩输出的情况下使用 ctx.stream,前端请求中需要包含以下 content-type 头部:

content-type: text/event-stream

登录后复制

gin 在其 gin_brotli.go 文件中提供了以下检查函数:

func shouldCompress(req *http.Request, options *Options) bool {    if !strings.Contains(req.Header.Get("Accept-Encoding"), "br") ||        strings.Contains(req.Header.Get("Connection"), "Upgrade") ||        strings.Contains(req.Header.Get("Content-Type"), "text/event-stream") {        return false    }    // ...}

登录后复制

如果请求包含正确的 content-type 头部,则可以正常使用 ctx.stream。

以上就是为何 gin 的 ctx.Stream 偶尔会延迟输出结果?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2311404.html

(0)
上一篇 2025年2月28日 12:22:41
下一篇 2025年2月28日 12:23:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论