Skip to content

Commit 41cd3f5

Browse files
authored
Merge pull request #8 from rhino723hh/patch-1
2 parents 2e82d4f + bd2f358 commit 41cd3f5

File tree

1 file changed

+35
-2
lines changed

1 file changed

+35
-2
lines changed

docs/framework/gin/2-gin-response-processing/9-gin-streaming-response.mdx

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ description: 了解如何在Gin框架中实现流式响应,逐步掌握流式
2020

2121
Gin框架通过`c.Stream()`方法支持流式响应。以下是一个简单的示例,展示如何使用Gin实现流式响应。
2222

23-
### 示例代码
23+
### 示例代码1
2424

2525
```go
2626
package 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流式响应的基本概念和实现方法。继续实践和探索,你将能够更好地应用流式响应技术解决实际问题。

0 commit comments

Comments
 (0)