File tree Expand file tree Collapse file tree 1 file changed +35
-2
lines changed
docs/framework/gin/2-gin-response-processing Expand file tree Collapse file tree 1 file changed +35
-2
lines changed Original file line number Diff line number Diff line change @@ -20,7 +20,7 @@ description: 了解如何在Gin框架中实现流式响应,逐步掌握流式
2020
2121Gin框架通过` c.Stream() ` 方法支持流式响应。以下是一个简单的示例,展示如何使用Gin实现流式响应。
2222
23- ### 示例代码
23+ ### 示例代码1
2424
2525``` go
2626package main
@@ -38,6 +38,8 @@ func main() {
3838 for i := 0 ; i < 10 ; i++ {
3939 time.Sleep (1 * time.Second )
4040 c.SSEvent (" message" , " Hello, World!" )
41+ // 同一个step内的循环,要手动flush才会逐次输出
42+ c.Writer .Flush ()
4143 }
4244 return false // 结束流
4345 })
@@ -46,6 +48,37 @@ func main() {
4648 r.Run (" :8080" )
4749}
4850```
51+ ### 示例代码2
52+
53+ ``` go
54+ package main
55+
56+ import (
57+ " io"
58+ " time"
59+ " github.com/gin-gonic/gin"
60+ )
61+
62+ func main () {
63+ r := gin.Default ()
64+
65+ r.GET (" /stream" , func (c *gin.Context ) {
66+ i := 0
67+ c.Stream (func (w io.Writer ) bool {
68+ if i >= 10 {
69+ return false // 结束流
70+ }
71+ time.Sleep (1 * time.Second )
72+ c.SSEvent (" message" , " Hello, World!" )
73+ i++
74+ return true // 继续下一轮,Gin 会自动 Flush
75+ })
76+ })
77+
78+ r.Run (" :8080" )
79+ }
80+ ```
81+
4982
5083### 代码解析
5184
@@ -117,4 +150,4 @@ r.GET("/download", func(c *gin.Context) {
117150 - [ Gin官方文档] ( https://gin-gonic.com/docs/ )
118151 - [ Server-Sent Events (SSE) 规范] ( https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events )
119152
120- 通过本文的学习,你应该已经掌握了Gin流式响应的基本概念和实现方法。继续实践和探索,你将能够更好地应用流式响应技术解决实际问题。
153+ 通过本文的学习,你应该已经掌握了Gin流式响应的基本概念和实现方法。继续实践和探索,你将能够更好地应用流式响应技术解决实际问题。
You can’t perform that action at this time.
0 commit comments