# learning_sse Learning [Server Side Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_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 ```