Beim Arbeiten mit HTTP-Long-Polls unter Verwendung des http.Client kann es erforderlich sein, die Anfrage vorzeitig vom zu beenden Client-seitig. Historisch gesehen konnte resp.Body.Close() verwendet werden, für die Ausführung war jedoch eine separate Goroutine erforderlich.
Aktuelle Lösung: Kontextbasierter Abbruch
Um dieses Problem zu beheben Problem, Go empfiehlt jetzt die Verwendung von http.Request.WithContext, um einen Kontext mit einer Frist oder einem Stornierungsmechanismus zu übergeben. Dies macht eine zusätzliche Goroutine überflüssig und bietet einen saubereren, standardisierten Ansatz.
Beispiel
req, err := http.NewRequest("GET", "http://example.com", nil) req = req.WithContext(ctx) // Pass the context with deadline or cancelation mechanism resp, err := client.Do(req)
Dieser Ansatz bietet eine bessere Kontrolle über die Stornierung von Anfragen und ermöglicht dies basierend auf Benutzeraktionen oder anderer Anwendungslogik ausgelöst werden, nicht nur auf Zeitüberschreitungen.
Das obige ist der detaillierte Inhalt vonWie kann ich POST-Anfragen des Go-HTTP-Clients vorzeitig schließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!