Что я должен настроить для обработки SSE в golang http.server - PullRequest
0 голосов
/ 10 октября 2018

http.server можно настроить с этими параметрами:

ReadTimeout, WriteTimeout,IdleTimeout and others

Я просто играл с параметрами, чтобы посмотреть, в каких случаях лучше настроить SSE, поэтому следуйте инструкциямто же самое структурировано из здесь Я просто добавляю несколько отпечатков, чтобы увидеть, когда клиенты подключаются и когда отключается, например:

 ....
    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, но читая эту статью , эта часть меня смущает:

Наконец, Go 1.8 вводит IdleTimeout, который ограничивает время, необходимое для поддержания активности на стороне сервера.соединение будет оставаться свободным до повторного использования

Но, как я уже сказал, даже если я изменю IdleTimeout, клиент не закроется, потому что, когда клиент впервые подключается, я пишу в него, илиэто ошибка?Какой из трех я должен изменить тогда?Версия Go: 1.11.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...