Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghantar Respons HTTP yang Dipotong daripada Pelayan Go?
Hantar Tindak Balas HTTP Chunk dari Pelayan Go
Penyelesaian:
Untuk menghantar chunk Respons HTTP daripada pelayan Go dan menerimanya dalam masa nyata, anda perlu menggunakan Flusher.Flush() selepas menulis setiap ketulan data. Ini mencetuskan pengekodan "chunked" dan segera menghantar chunk kepada klien. Berikut ialah contoh cara untuk melaksanakan perkara ini:
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)) }
Pengesahan:
Menggunakan telnet, anda boleh menyambung ke pelayan dan menyaksikan respons potongan dihantar:
$ 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 ...
Tambahan Nota:
Atas ialah kandungan terperinci Bagaimana untuk Menghantar Respons HTTP yang Dipotong daripada Pelayan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!