下面是一个简单的 Go 服务端 SSE 的代码示例:
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
http.HandleFunc("/stream", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
w.Header().Set("Access-Control-Allow-Origin", "*")
for {
fmt.Fprintf(w, "event: ping\n")
fmt.Fprintf(w, "data: %v\n\n", time.Now().Format("2006-01-02 15:04:05"))
time.Sleep(1 * time.Second)
}
})
http.ListenAndServe(":8080", nil)
}
该示例使用 http.HandleFunc()
注册了一个名为 /stream
的路由,该路由返回 SSE 内容。在该函数中,我们使用 w.Header().Set()
方法设置 SSE 头信息。然后使用一个循环语句,每秒钟向客户端发送一条 SSE 数据。在该示例中,我们只发送当前时间,但您可以根据您的业务逻辑更改此处的代码。
最后,我们使用 http.ListenAndServe()
启动了 HTTP 服务器并始终监听请求。