我已经将处理程序定义为:
func handleEvents(w http.ResponseWriter, r *http.Request) {
f, ok := w.(http.Flusher)
if !ok {
http.Error(w, "sse not supported", http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
w.Header().Set("Connection", "keep-alive")
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
count := 0
for {
select {
case t := <-ticker.C:
fmt.Fprintf(w, "id: %d\n", count)
fmt.Fprintf(w, "event: %s\n", "timestamp")
fmt.Fprintf(w, "data: %s\n\n", t.String())
f.Flush()
count++
if count == 5 {
return
}
case <-r.Context().Done():
log.Println("client disconnected")
return
}
}
}
当我卷曲端点时,它每秒打印一行。 当我尝试用 Chromium 打开它时,它每秒打印一行。 但是当我用 Firefox 尝试时,它开始下载并在 5 秒后完成。
我试过使用 node.js 服务器,但 Firefox 开始下载。 我尝试使用新的配置文件运行 Firefox,没有附加组件,但同样的事情发生了。
我做错了什么还是 Firefox 不支持这种行为?