👌 IMPROVE:对外推流索引改为以url为键,优化SSE代码

This commit is contained in:
dexter
2022-10-07 22:42:07 +08:00
parent 265ab7c723
commit 9454ded0ee
7 changed files with 102 additions and 63 deletions

View File

@@ -10,19 +10,17 @@ import (
)
func ReturnJson[T any](fetch func() T, tickDur time.Duration, rw http.ResponseWriter, r *http.Request) {
if r.URL.Query().Get("sse") == "" {
if err := json.NewEncoder(rw).Encode(fetch()); err != nil {
http.Error(rw, err.Error(), http.StatusInternalServerError)
}
return
}
sse := NewSSE(rw, r.Context())
tick := time.NewTicker(tickDur)
for range tick.C {
if sse.WriteJSON(fetch()) != nil {
tick.Stop()
break
if r.Header.Get("Accept") == "text/event-stream" {
sse := NewSSE(rw, r.Context())
tick := time.NewTicker(tickDur)
defer tick.Stop()
for range tick.C {
if sse.WriteJSON(fetch()) != nil {
return
}
}
} else if err := json.NewEncoder(rw).Encode(fetch()); err != nil {
http.Error(rw, err.Error(), http.StatusInternalServerError)
}
}
@@ -62,6 +60,7 @@ func ListenUDP(address string, networkBuffer int) (*net.UDPConn, error) {
}
return conn, err
}
// CORS 加入跨域策略头包含CORP
func CORS(next http.HandlerFunc) http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {