You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
![]() |
6 days ago | |
---|---|---|
.gitignore | 6 days ago | |
LICENSE | 6 days ago | |
README.md | 6 days ago | |
go.mod | 6 days ago | |
main.go | 6 days ago |
README.md
learning_sse
Learning Server Side Events can be fun.
The magic is in setting the Content Type
header to text/event-stream
, writing the response in the from of data: %s \n\n
, and flushing the content of the WriteResponse buffer manually. This is necessary because by default Go will implicitly flush the buffer only once the Handler has returned.
func SSEHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/event-stream")
tokens := strings.Split("Hey there Drew. I hope you enjoy The Alters!", " ")
for _, token := range tokens {
w.Write([]byte(fmt.Sprintf("data: %s \n\n", token)))
w.(http.Flusher).Flush()
time.Sleep(time.Millisecond * 420)
}
}
Use go run main.go
and try curling the the sse endpoint.
curl http://0.0.0.0:8888/sse