Gin框架中ctx.Stream失效:为什么启用压缩中间件后流式传输无效?
gin 的 stream 输出机制
问题:为什么 gin 的 ctx.stream 无法直接将输出流式传输到客户端?
解答:
ctx.stream 输出不生效的原因是启用了 gin 的压缩输出中间件。
点击下载“嗨格式压缩大师”;
r := gin.new()r.use(brotli.brotli(brotli.defaultcompression))
在启用了压缩中间件后,只有当请求头中包含 content-type: text/event-stream 时,ctx.stream 才会有效。
这是因为 gin 的 gin_brotli.go 中的方法 shouldcompress 会判断压缩设置:
if strings.Contains(req.Header.Get("Content-Type"), "text/event-stream") { return false}
如果请求头中不包含 text/event-stream,shouldcompress 会返回 true,表明需要对响应内容进行压缩。这种情况下,ctx.stream 就会被忽略,响应内容会被先压缩后才输出。
文章推荐
-
PHP 函数中如何使用递归来求最小公倍数?
在 php 中,可以使用递归求最小公倍数:定义递归函数 lcm($num1, $num2);递归基案例:如果其中一个数为...
PHP
1个月前 (12-16) 131 -
PHP 函数中使用引用的高级技巧和用法
php引用允许变量链接到其原始值,使对变量的更改反映在原始值上。使用引用有两种主要高级技巧:传递按引用:通过在参数前添加...
PHP
1个月前 (12-16) 92 -
PHP 函数中引用传递与函数调用栈的关系
php 中的引用传递在函数调用栈中影响函数参数的存储,使得函数可以直接修改实参的值;它通过地址传参,当修改参数时,主函数...
PHP
1个月前 (12-16) 91 -
PHP 函数中引用传递的深浅拷贝问题
php 中引用传递默认是深拷贝,即创建原对象的副本,修改新对象不会影响原对象。浅拷贝只复制原对象的引用,修改新对象也会影...
PHP
1个月前 (12-16) 88 -
PHP 函数中如何使用递归来实现深度优先搜索?
使用 php 函数中的递归实现深度优先搜索 (dfs) 算法。该算法以树或图形的根节点开始,递归地遍历相邻节点,直到达到...
PHP
1个月前 (12-16) 96
最新文章
- Python - 检查字符串中的所有字符是否都是字母数字? 26秒前
- 高级Python元编程:动态代码生成和反射 1分钟前
- 如何在Python中实现梯度下降算法以寻找局部最小值? 3分钟前
- Python程序删除数组中的重复元素 3分钟前
- 使用Networxx模块的超链接诱导主题搜索(HITS)算法- Python 4分钟前
- 使用索引列表在Python中查找元素的乘积 5分钟前
- 在Python中打印字符串的所有子序列 5分钟前
- 使用Python从字符串的末尾删除给定的子字符串 6分钟前
- 2020年适用于Linux程序员的10个最佳Python集成开发环境 7分钟前
- 获取字典中的第一个和最后一个元素的Python程序 7分钟前