feat: implements text/event-stream(SSE) MIME parser (#1416)

Co-authored-by: 007gzs <007gzs@gmail.com>
This commit is contained in:
纪卓志
2024-10-24 16:58:45 +08:00
committed by GitHub
parent cdd71155a9
commit e7561c30e5
13 changed files with 885 additions and 6 deletions

View File

@@ -0,0 +1,42 @@
package main
import (
"log"
"net/http"
"time"
)
var events = []string{
": this is a test stream\n\n",
"data: some text\n",
"data: another message\n",
"data: with two lines\n\n",
"event: userconnect\n",
"data: {\"username\": \"bobby\", \"time\": \"02:33:48\"}\n\n",
"event: usermessage\n",
"data: {\"username\": \"bobby\", \"time\": \"02:34:11\", \"text\": \"Hi everyone.\"}\n\n",
"event: userdisconnect\n",
"data: {\"username\": \"bobby\", \"time\": \"02:34:23\"}\n\n",
"event: usermessage\n",
"data: {\"username\": \"sean\", \"time\": \"02:34:36\", \"text\": \"Bye, bobby.\"}\n\n",
}
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
log.Println("receive request")
w.Header().Set("Content-Type", "text/event-stream")
for _, e := range events {
_, _ = w.Write([]byte(e))
time.Sleep(1 * time.Second)
w.(http.Flusher).Flush()
}
})
if err := http.ListenAndServe("0.0.0.0:8080", nil); err != nil {
panic(err)
}
}