Envoyer une réponse HTTP fragmentée à partir d'un serveur Go
Solution :
Pour envoyer une réponse fragmentée Réponses HTTP d'un serveur Go et les recevoir en temps réel, il est nécessaire d'invoquer Flusher.Flush() après avoir écrit chaque bloc de données. Cela déclenche le codage « fragmenté » et envoie immédiatement le fragment au client. Voici un exemple de la façon de mettre en œuvre ceci :
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)) }
Vérification :
À l'aide de telnet, vous pouvez vous connecter au serveur et assister à l'envoi de la réponse fragmentée :
$ 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 ...
Supplémentaire Remarques :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!