为了账号安全,请及时绑定邮箱和手机立即绑定

Go Flush() 不起作用

Go Flush() 不起作用

Go
米脂 2021-08-23 16:00:18
请检查这个要点并告诉我,出了什么问题?为什么我看不到我的消息?要点:https : //gist.github.com/cnaize/895f61b762a9f5ee074c如果简单,我有两个功能:func send(param martini.Params, r render.Render) {    Ct.Msgs <- param["msg"]    fmt.Printf("Sent: %v", param["msg"])    r.JSON(http.StatusOK, Response{"status": "ok"})}和watch功能:func watch(rw http.ResponseWriter, r render.Render) {    var msg string    ok := true    for ok {        select {        case msg, ok = <-Ct.Msgs:            rw.Write([]byte(msg))            fmt.Printf("Wrote: %v", msg)            f, ok := rw.(http.Flusher)            if ok {                f.Flush()                fmt.Println("Flushed")            } else {                r.JSON(http.StatusOK, Response{"status": "error", "descr": "CANT_FLUSH"})                return            }        }    }    r.JSON(http.StatusOK, Response{"status": "ok", "descr": "finished"})}为什么它不起作用?编辑:我已经更新了我的要点。现在在哪里:if i, err := rw.Write([]byte(msg)); err != nil {    r.JSON(http.StatusOK, Response{"status": "error", "descr": err.Error()})    return} else {    fmt.Printf("i: %v", i)}我有日志: Sent: hello i: 5 Wrote: hello Flushed但我什么也没看到。有什么想法吗?
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

冲洗工作。问题是 Chrome 的纯文本渲染器在显示任何内容之前等待完整的响应正文。强制内容类型为 html 以查看增量响应:


func watch(rw http.ResponseWriter, r render.Render) {

    rw.Header().Set("Content-Type", "text/html")

    // same code as before

}


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 349 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信