为什么 Content-Type 为 text/event-stream 时 Firefox 开始下载

问题描述 投票:0回答:0

我已经将处理程序定义为:

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 不支持这种行为?

linux rest go firefox server-sent-events
© www.soinside.com 2019 - 2024. All rights reserved.