package datasse import ( "net/http" "time" "ciyon/web/admin" . "ciyon/zciyon" ) func DataSSE_demo(w http.ResponseWriter, r *http.Request) bool { if !SSEInit(w) { w.Write([]byte("不支持SSE Flush")) return false } post := NewCiyPost(w, r) rsuser, err := admin.Verifyuser(CiyDB, post) if err != nil { SSESend_event(w, "请重新登录") return false } if admin.Nopower(CiyDB, Toint(rsuser["id"]), "p610r") { SSESend_event(w, "您未被授权操作") return false } param := post.Get("param") SSESend_data(w, param) for i := 0; i < 100; i++ { if i%10 == 1 { SSESend_data(w, "ssr: "+Tostr(i), i) } if !SSESend_event(w, Tostr(i)) { return true } Sleep(0.05) } SSESend_event(w, "ok") return true } func DataSSE_demo_ch(w http.ResponseWriter, r *http.Request) bool { if !SSEInit(w) { w.Write([]byte("不支持SSE Flush")) return false } post := NewCiyPost(w, r) rsuser, err := admin.Verifyuser(CiyDB, post) if err != nil { SSESend_event(w, "请重新登录") return false } if admin.Nopower(CiyDB, Toint(rsuser["id"]), "p610r") { SSESend_event(w, "您未被授权操作") return false } param := post.Get("param") SSESend_data(w, param) done := r.Context().Done() ticker := time.NewTicker(time.Second) defer ticker.Stop() for { select { case <-done: return false case <-ticker.C: if !SSESend_data(w, time.Now().Format(time.RFC3339)) { return true } } } }