跳到主要内容
版本:2.9.x(Latest)

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

设置

  1. 克隆仓库:

    git clone https://github.com/gogf/examples.git
    cd examples/httpserver/sse
  2. 安装依赖:

    go mod tidy
  3. 运行应用程序:

    go run main.go

使用方法

  1. 运行示例:

    go run main.go
  2. 服务器将在以下地址启动:http://127.0.0.1:8000

  3. 访问SSE端点:

实现细节

SSE实现包括:

  • 设置正确的SSE HTTP头:

    • Content-Type: text/event-stream
    • Cache-Control: no-cache
    • Connection: keep-alive
  • 使用适当的刷新进行流式响应

  • 使用time.Sleep模拟打字延迟

  • 使用GoFrame的路由器进行简单的HTTP路由

注意事项

  • SSE连接保持打开状态,直到客户端明确关闭
  • 服务器必须在每条消息后刷新响应缓冲区
  • 对于生产环境,请考虑实现重连逻辑和事件ID
  • SSE通过常规HTTP/HTTPS工作,并支持浏览器中的自动重连