Go 서버에서 청크된 HTTP 응답 보내기
해결책:
청크된 HTTP 응답을 보내려면 Go 서버로부터 HTTP 응답을 받아 실시간으로 수신하려면 호출이 필요합니다. 각 데이터 청크를 작성한 후 Flusher.Flush(). 이렇게 하면 "청크" 인코딩이 트리거되고 즉시 청크가 클라이언트에 전송됩니다. 이를 구현하는 방법의 예는 다음과 같습니다.
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)) }
확인:
텔넷을 사용하여 서버에 연결하고 청크 응답이 전달되는 것을 확인할 수 있습니다.
$ 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 ...
추가 참고:
위 내용은 Go 서버에서 청크 HTTP 응답을 보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!