Heim >Backend-Entwicklung >Golang >Wie sende ich geblockte HTTP-Antworten von einem Go-Server?
Senden Sie eine geblockte HTTP-Antwort von einem Go-Server
Lösung:
So senden Sie geblockt Um HTTP-Antworten von einem Go-Server zu erhalten und diese in Echtzeit zu empfangen, ist es notwendig, nach dem Schreiben jedes Datenblocks Flusher.Flush() aufzurufen. Dies löst die „chunked“-Codierung aus und sendet den Chunk sofort an den Client. Hier ist ein Beispiel für die Implementierung:
package main import ( "fmt" "io" "log" "net/http" "time" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { flusher, ok := w.(http.Flusher) if !ok { panic("expected http.ResponseWriter to be an http.Flusher") } w.Header().Set("X-Content-Type-Options", "nosniff") for i := 1; i <= 10; i++ { fmt.Fprintf(w, "Chunk #%d\n", i) flusher.Flush() // Trigger "chunked" encoding and send a chunk... time.Sleep(500 * time.Millisecond) } }) log.Print("Listening on localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
Überprüfung:
Mit Telnet können Sie eine Verbindung zum Server herstellen und beobachten, wie die geblockte Antwort übermittelt wird:
$ telnet localhost 8080 Trying ::1... Connected to localhost. Escape character is '^]'. GET / HTTP/1.1 HTTP/1.1 200 OK Date: Tue, 02 Jun 2015 18:16:38 GMT Content-Type: text/plain; charset=utf-8 Transfer-Encoding: chunked 9 Chunk #1 9 Chunk #2 ...
Zusätzlich Hinweise:
Das obige ist der detaillierte Inhalt vonWie sende ich geblockte HTTP-Antworten von einem Go-Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!