Respons HTTP Chunked Berterusan daripada Pelayan Go
Dalam usaha untuk mencipta pelayan HTTP Go yang menghantar cebisan data secara berterusan, anda telah menghadapi cabaran. Daripada menerima potongan seperti yang dimaksudkan setiap saat, pelanggan anda hanya menerima keseluruhan respons selepas tempoh 5 saat. Selain itu, anda ingin menghantar pengepala Panjang Kandungan sebagai 0 pada penghujung penghantaran.
Untuk menyelesaikan isu ini, adalah penting untuk menyepadukan antara muka Flusher ke dalam pelaksanaan pelayan anda. Berikut ialah versi kod anda yang dipinda:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
|
Dengan menggunakan Flusher.Flush() selepas setiap bahagian ditulis, anda mencetuskan pengekodan "chunked" dan menghantar potongan individu. Ini memastikan pelanggan menerima data apabila ia tersedia.
Mengesahkan tingkah laku ini boleh dicapai melalui telnet, seperti yang ditunjukkan di bawah:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Kod yang diubah suai ini membolehkan penghantaran respons HTTP Chunked Berterusan daripada pelayan Go anda. Ingat untuk mengesahkan bahawa ResponseWriters anda menyokong akses serentak merentas berbilang goroutine untuk prestasi optimum.
Atas ialah kandungan terperinci Mengapa Pelayan HTTP My Go Hanya Menghantar Data Potongan Selepas Kelewatan, dan Bagaimana Saya Boleh Menetapkan Panjang Kandungan kepada 0?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!