Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menggugurkan Permintaan POST Undian Lama dalam Go?

Bagaimanakah Saya Boleh Menggugurkan Permintaan POST Undian Lama dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-26 00:23:13
asal
822 orang telah melayarinya

How Can I Abort Long-Polling POST Requests in Go?

Teknik untuk Menggugurkan Permintaan Pengundian Panjang dalam Go

Dalam konteks tinjauan panjang, di mana sambungan pelanggan-pelayan disimpan hidup untuk tempoh yang lama, ia mungkin menjadi perlu untuk menamatkan permintaan lebih awal daripada pihak pelanggan. Walaupun perpustakaan http.Client menyediakan gelagat menyekat lalai untuk tinjauan panjang, persoalan timbul: bagaimanakah permintaan POST boleh dibatalkan atau dibatalkan sebelum respons diterima sepenuhnya?

Pendekatan tradisional untuk memanggil resp.Body .Close() untuk menutup respons lebih awal adalah tidak digalakkan kerana ia memerlukan orkestrasi tambahan melalui goroutine lain. Selain itu, menggunakan ciri tamat masa http.Transport mungkin tidak sejajar dengan keperluan untuk pembatalan yang dimulakan pengguna.

Mujurlah, ekosistem Go telah berkembang untuk menyediakan penyelesaian yang lebih diperkemas melalui http.Request.WithContext. Ini membolehkan pelanggan menentukan konteks terikat masa untuk permintaan, membolehkan penamatan yang anggun sebagai tindak balas kepada peristiwa luaran. Coretan kod di bawah menunjukkan pendekatan ini:

// Create a new request with an appropriate context, using a deadline to terminate after a specific duration.
req, err := http.NewRequest("POST", "http://example.com", nil)
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(5*time.Second))
req = req.WithContext(ctx)
err = client.Do(req)
if err != nil {
    // Handle the error, which may indicate a premature termination due to the context deadline.
}
Salin selepas log masuk

Dengan memanggil cancel() pada objek konteks, permintaan itu boleh dibatalkan pada bila-bila masa, mencetuskan penamatan tinjauan panjang. Ini menyediakan mekanisme yang boleh dipercayai dan cekap untuk pembatalan permintaan HTTP POST yang dikawal oleh pengguna.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggugurkan Permintaan POST Undian Lama dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan