KunWeb/web/admin/datasse/index.go
2025-05-16 01:00:48 +08:00

74 lines
1.4 KiB
Go

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
}
}
}
}