golang sse
时间: 2023-10-01 18:07:59 浏览: 126
GoLang
5星 · 资源好评率100%
Golang中的SSE(Server-Sent Events)是一种服务器向客户端单向发送事件流的技术。它允许服务器实时地向客户端发送数据,而无需客户端发起请求。这对于实现实时通信或推送消息非常有用。在Golang中,您可以使用`net/http`包来实现SSE。
下面是一个简单的示例代码,演示如何在Golang中使用SSE:
```go
package main
import (
"fmt"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 设置响应头,指定使用SSE
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 i := 0; i < 10; i++ {
// 通过写入响应流发送事件数据
fmt.Fprintf(w, "event: message\n")
fmt.Fprintf(w, "data: This is message %d\n\n", i)
// 刷新响应流,确保数据发送到客户端
w.(http.Flusher).Flush()
time.Sleep(1 * time.Second)
}
})
http.ListenAndServe(":8080", nil)
}
```
在上述示例中,我们创建了一个HTTP服务器,并定义了一个处理函数来处理所有请求。在处理函数中,我们首先设置响应头,指定使用SSE。然后,我们进入一个循环,每隔1秒发送一个事件数据到客户端。使用`fmt.Fprintf`函数将事件数据写入响应流,通过`w.(http.Flusher).Flush()`来刷新响应,确保数据即时发送到客户端。
您可以运行上述代码,然后在浏览器中访问`http://localhost:8080`,您将看到10个事件从服务器实时地推送到客户端。
这只是一个简单的示例,您可以根据自己的需求进行扩展和定制。希望对您有所帮助!如果有任何进一步的问题,请随时提问。
阅读全文