我应该在Golang http.server中配置什么来处理SSE

时间:2018-10-10 11:26:32

标签: go server-sent-events

可以使用以下参数配置

http.server

ReadTimeout, WriteTimeout,IdleTimeout and others

我只是在玩弄参数,以查看在哪种情况下使用SSE进行配置会更好,因此请遵循here中的结构 我只是添加一些打印以查看客户端何时连接以及何时断开连接,例如:

 ....
    notify := rw.(http.CloseNotifier).CloseNotify()
     fmt.Fprintf(w, "data: .\n\n") `//I add this because [onopen][3] won´t` fire if nothing is sent when start conecting
    fmt.Println(" conecting")
        for {
            select {
            case <-notify:
    fmt.Println("closing")
                return
            default:

                // Write to the ResponseWriter
                // Server Sent Events compatible
                fmt.Fprintf(rw, "data: %s\n\n", <-messageChan)

                // Flush the data immediatly instead of buffering it for later.
                flusher.Flush()
            }
        } 

因此,如果我更改了,它唯一会显示“结束”的值是WriteTimeout,但是读到this article时,这部分使我感到困惑:

  

最后,Go 1.8引入了IdleTimeout,它限制了服务器端的   保持活动连接在保持连接之前将保持空闲状态的时间   重复使用

但是正如我所说,即使我更改了IdleTimeout,该客户端也不会关闭,是因为客户端第一次连接到我写的它,还是一个bug? 那我应该改变三个中的哪个? Go版本:1.11.1

0 个答案:

没有答案