工具类
SSE
type SSE struct {
http.ResponseWriter
context.Context
}
func NewSSE(w http.ResponseWriter, ctx context.Context) *SSE
func (sse *SSE) WriteEvent(event string, data []byte) (err error)
func (sse *SSE) WriteJSON(data interface{}) (err error)
func (sse *SSE) WriteExec(cmd *exec.Cmd) error
用于方便的进行提供SSE服务。
- NewSSE 从http的handler函数提供的参数创建SSE辅助对象。
- WriteEvent 发送时间
- WriteJSON 发送json对象
- WriteExec 执行一个cmd,然后将输出结果推送的浏览器
示例:
func summary(w http.ResponseWriter, r *http.Request) {
sse := NewSSE(w, r.Context())
Summary.Add()
defer Summary.Done()
sse.WriteJSON(&Summary)
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
if sse.WriteJSON(&Summary) != nil {
return
}
case <-r.Context().Done():
return
}
}
}