mirror of
https://github.com/Monibuca/engine.git
synced 2025-10-10 19:10:15 +08:00
👌 IMPROVE:对外推流索引改为以url为键,优化SSE代码
This commit is contained in:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user