Dengan perkembangan tinggi aplikasi web, rangkaian sosial dan aplikasi sembang telah menjadi bahagian yang amat diperlukan dalam kehidupan moden. Aplikasi ini menggunakan teknologi komunikasi masa nyata, dan ia memerlukan sistem tolakan mesej yang boleh dipercayai dan cekap untuk mengekalkan maklum balas masa nyata dan kemas kini maklumat daripada pengguna. Kemunculan Golang menyediakan penyelesaian yang lebih baik untuk teknologi komunikasi masa nyata, dan teknologi yang paling penting ialah tinjauan panjang.
Tinjauan panjang ialah teknologi pemesejan masa nyata untuk aplikasi web dan pelayan Ia mempunyai ciri kependaman rendah dan kebolehpercayaan yang tinggi. Dalam aplikasi tradisional, seperti seni bina pelayan-pelanggan dan API REST (Pemindahan Negeri Perwakilan), pelanggan biasanya memperoleh data yang dikemas kini dengan mengundi pelayan secara berkala. Walau bagaimanapun, kaedah ini akan menyebabkan peningkatan besar dalam beban pelayan, terutamanya dalam situasi konkurensi yang tinggi Memandangkan setiap pelanggan sentiasa mengundi pelayan, tekanan pada pelayan akan menjadi sangat tinggi. Teknologi pengundian panjang boleh menyelesaikan masalah ini dengan berkesan.
Prinsip pelaksanaan teknologi tinjauan panjang ialah pelanggan menghantar permintaan kepada pelayan, dan pelayan menunggu untuk tempoh masa selepas menerima permintaan sehingga data baharu dikemas kini sebelum menjawab permintaan pelanggan dan mengembalikan maklum balas. Hantar data terkini kepada pelanggan. Berulang kali, sambungan antara pelanggan dan pelayan sentiasa dikekalkan tanpa perlu meminta dan menutup sambungan sekerap kaedah tinjauan pendek tradisional, dengan itu berkesan mengurangkan bilangan sambungan serentak ke pelayan dan penggunaan lebar jalur.
Sekarang, mari kita fahami secara ringkas cara melaksanakan teknologi pengundian panjang menggunakan Golang.
Pertama, kita perlu melaksanakan logik tindak balas pengundian yang panjang di bahagian pelayan. Di Golang, ini boleh dicapai menggunakan pakej "net/http" dan "masa" perpustakaan standard. Pelayan mula-mula menerima permintaan daripada klien, dan kemudian menggunakan kaedah "masa. Selepas" untuk menunggu untuk tempoh masa Di sini kami menetapkan masa menunggu kepada 10 saat. Jika terdapat kemas kini data baharu dalam masa menunggu, data terkini akan dikembalikan dalam respons, jika tidak, respons kosong akan dikembalikan. Kodnya adalah seperti berikut:
package main import ( "fmt" "net/http" "time" ) func main() { http.HandleFunc("/poll", func(w http.ResponseWriter, r *http.Request) { <-time.After(10 * time.Second) fmt.Fprintf(w, "Hello, world!") }) http.ListenAndServe(":8080", nil) }
Seterusnya, kita perlu melaksanakan logik panggilan pengundian yang panjang pada klien. Di Golang, anda boleh menggunakan pakej "net/http" dan "io/ioutil" untuk menghantar permintaan HTTP. Pelanggan boleh mencipta gelung tak terhingga di mana ia menghantar permintaan HTTP dan menunggu respons pelayan. Dalam setiap respons, kami boleh mencetak data yang dikembalikan oleh pelayan dan menghantar permintaan itu semula. Kodnya adalah seperti berikut:
package main import ( "fmt" "io/ioutil" "net/http" ) func main() { for { res, err := http.Get("http://localhost:8080/poll") if err != nil { fmt.Println(err) continue } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) continue } fmt.Println(string(body)) } }
Perlu diambil perhatian bahawa pelaksanaan pengundian lama kami masih mempunyai beberapa masalah. Biasanya, antara menerima permintaan ini dan mengembalikan respons, mungkin terdapat kelewatan dalam rangkaian atau sebab lain yang menyebabkan perbezaan masa antara permintaan dan respons menjadi sangat besar. Jika kita perlu menunggu untuk masa yang lama, kita mungkin menghadapi masalah berikut:
1 Pelanggan melahu semasa masa menunggu, jadi ia perlu menghantar permintaan dalam gelung, jalur lebar dan sumber pelayan yang meletihkan.
2. Jika sebilangan besar pelanggan meminta kaedah yang sama pada masa yang sama, pelayan akan menjadi huru-hara dan tidak dapat mengendalikan sejumlah besar permintaan yang belum selesai.
3 Dalam tempoh pengundian yang panjang, pelanggan mungkin terputus secara automatik atas sebab-sebab seperti "kegagalan rangkaian" atau "penutupan mengejut".
Untuk menyelesaikan masalah ini, kami boleh menggunakan teknologi seperti WebSocket atau SSE (Server-sent Events) untuk menambah baik lagi pelaksanaan tinjauan panjang kami. Walau bagaimanapun, ini bukan fokus artikel ini Pembaca boleh mengetahui lebih lanjut mengenainya dengan merujuk maklumat dan literatur yang berkaitan.
Dalam ringkasan, kami mempelajari tentang kaedah khusus untuk melaksanakan teknologi pengundian panjang di Golang, dan juga memahami prinsip dan kepentingan teknologi tinjauan panjang. Dengan pembangunan aplikasi Web yang tinggi pada masa ini, kami percaya bahawa teknologi tinjauan panjang akan semakin digunakan secara meluas dan menjadi salah satu kaedah utama teknologi komunikasi masa nyata.
Atas ialah kandungan terperinci pelaksanaan pengundian panjang golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!