Server-Sent Events(SSE)
Github Source: https://github.com/gogf/examples/tree/main/httpserver/sse
描述
本示例演示了如何使用 GoFrame 实现服务器发送事件(SSE)。服务器发送事件是一种允许服务器通过HTTP连接向客户端推送更新的技术。与WebSocket不同,SSE是单向的 - 只有服务器可以向客户端发送数据。
本示例实现了一个简单的SSE服务端实现,逐字符流式传输响应,模拟现代AI聊天应用程序中常见的实时打字效果。
要求
结构
- go.mod: Go模块文件
- main.go: 包含SSE实现的主应用程序入口点
特性
- 服务器发送事件实现
- 模拟
AI聊天逐字符流式响应 - 适用于
SSE的正确HTTP头
设置
-
克隆仓库:
git clone https://github.com/gogf/examples.git
cd examples/httpserver/sse -
安装依赖:
go mod tidy -
运行应用程序:
go run main.go
使用方法
-
运行示例:
go run main.go -
服务器将在以下地址启动:http://127.0.0.1:8000
-
访问SSE端点:
- 在浏览器中,导航至:http://127.0.0.1:8000/ai/chat
- 您应该会看到单词逐个出现,产生打字效果
实现细节
SSE实现包括:
-
设置正确的
SSEHTTP头:Content-Type: text/event-streamCache-Control: no-cacheConnection: keep-alive
-
使用适当的刷新进行流式响应
-
使用
time.Sleep模拟打字延迟 -
使用
GoFrame的路由器进行简单的HTTP路由
注意事项
SSE连接保持打开状态,直到客户端明确关闭- 服务器必须在每条消息后刷新响应缓冲区
- 对于生产环境,请考虑实现重连逻辑和事件ID
SSE通过常规HTTP/HTTPS工作,并支持浏览器中的自动重连