73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package dyn
|
|
|
|
import (
|
|
"ciyon/web/admin"
|
|
c "ciyon/zciyon"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
func SSE_get(w http.ResponseWriter, r *http.Request) bool {
|
|
if !c.SSEInit(w) {
|
|
w.Write([]byte("不支持SSE Flush"))
|
|
return false
|
|
}
|
|
post := c.NewCiyPost(w, r)
|
|
rsuser, err := admin.Verifyuser(r, c.CiyDB, post)
|
|
if err != nil {
|
|
c.SSESend_event(w, "请重新登录")
|
|
return false
|
|
}
|
|
if admin.Nopower(c.CiyDB, c.Toint(rsuser["id"]), "p610r") {
|
|
c.SSESend_event(w, "您未被授权操作")
|
|
return false
|
|
}
|
|
param := post.Get("bb")
|
|
c.SSESend_data(w, param)
|
|
for i := 0; i < 100; i++ {
|
|
if i%10 == 1 {
|
|
c.SSESend_data(w, "sse: "+c.Tostr(i), i)
|
|
}
|
|
if !c.SSESend_event(w, c.Tostr(i)) {
|
|
return true
|
|
}
|
|
c.Sleep(0.05)
|
|
}
|
|
c.SSESend_event(w, "ok")
|
|
return true
|
|
}
|
|
|
|
func SSE_get_ch(w http.ResponseWriter, r *http.Request) bool {
|
|
if !c.SSEInit(w) {
|
|
w.Write([]byte("不支持SSE Flush"))
|
|
return false
|
|
}
|
|
post := c.NewCiyPost(w, r)
|
|
rsuser, err := admin.Verifyuser(r, c.CiyDB, post)
|
|
if err != nil {
|
|
c.SSESend_event(w, "请重新登录")
|
|
return false
|
|
}
|
|
if admin.Nopower(c.CiyDB, c.Toint(rsuser["id"]), "p610r") {
|
|
c.SSESend_event(w, "您未被授权操作")
|
|
return false
|
|
}
|
|
param := post.Get("param")
|
|
c.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 !c.SSESend_data(w, time.Now().Format(time.RFC3339)) {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
}
|