Maison > développement back-end > Golang > Comment envoyer des réponses HTTP fragmentées à partir d'un serveur Go ?

Comment envoyer des réponses HTTP fragmentées à partir d'un serveur Go ?

Barbara Streisand
Libérer: 2024-12-01 19:50:11
original
611 Les gens l'ont consulté

How to Send Chunked HTTP Responses from a Go Server?

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))
}
Copier après la connexion

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

...
Copier après la connexion

Supplémentaire Remarques :

  • Il vaut la peine de rechercher si http.ResponseWriters prend en charge l'accès simultané pour une utilisation simultanée par plusieurs goroutines.
  • Pour plus d'informations sur les "X-Content-Type-Options " en-tête, consultez cette question connexe.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal