WebSocket di Golang ialah alat pengaturcaraan rangkaian yang berkuasa yang menyediakan kami cara untuk berkomunikasi dalam masa nyata. Apabila kami menggunakan WebSocket untuk berkomunikasi, kami mungkin menghadapi situasi di mana kami perlu menutup sambungan WebSocket. Jadi, bagaimana untuk menutup sambungan WebSocket dengan betul di Golang? Artikel ini akan memperkenalkannya kepada anda secara terperinci.
Di Golang, kita boleh menggunakan perpustakaan net/http dan github.com/gorilla/websocket dalam perpustakaan standard untuk melaksanakan sambungan WebSocket. Dalam kedua-dua kes, terdapat kaedah untuk menutup sambungan WebSocket.
Tutup sambungan WebSocket dalam pustaka standard
Dalam perpustakaan standard, kita boleh menggunakan kaedah tutup WebSocket untuk menutup sambungan. Selepas menerima mesej tutup, kami boleh memanggil kaedah tutup WebSocket untuk menutup sambungan. Contoh kod adalah seperti berikut:
func main() { http.HandleFunc("/ws", websocketHandler) http.ListenAndServe(":8080", nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("Upgrade: ", err) } defer conn.Close() // 关闭 WebSocket 连接 // 读写逻辑 }
Dalam contoh di atas, kami mencipta sambungan WebSocket menggunakan pakej WebSocket dalam perpustakaan standard, dan memanggil conn.Close() melalui kata kunci tangguh selepas membaca dan menulis logik telah selesai untuk menutup sambungan.
Tutup sambungan WebSocket dalam perpustakaan gorila/websocket
Dalam perpustakaan gorila/soket web, kita boleh menutup sambungan dengan memanggil kaedah Tutup WebSocket Contoh kod adalah seperti berikut:
func main() { http.HandleFunc("/ws", websocketHandler) http.ListenAndServe(":8080", nil) } func websocketHandler(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal("Upgrade: ", err) } defer conn.Close() // 关闭 WebSocket 连接 // 读写逻辑 // 关闭 WebSocket 连接 conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) }
Dalam contoh di atas, kami menggunakan perpustakaan gorila/soket web untuk mencipta sambungan WebSocket, dan selepas logik baca dan tulis tamat, hantar mesej penutup kepada pihak lain dengan memanggil kaedah conn.WriteMessage . Dengan cara ini, pihak lain boleh menutup sambungan dengan menerima mesej rapat.
Ringkasan
Sama ada anda menggunakan pakej WebSocket dalam perpustakaan standard atau menggunakan perpustakaan gorila/soket web, anda boleh menutup sambungan WebSocket melalui kaedah yang sepadan. Dalam pembangunan sebenar, kita perlu memilih perpustakaan WebSocket yang sesuai dengan kita berdasarkan situasi sebenar untuk merealisasikan fungsi komunikasi masa nyata dengan lebih baik.
Atas ialah kandungan terperinci Bagaimana untuk menutup sambungan WebSocket dengan betul di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!