golang pengesyoran perpustakaan WebSocket: cepat bina sistem komunikasi masa nyata
Pengenalan:
Dengan perkembangan Internet, sistem komunikasi masa nyata menjadi semakin penting. Untuk memenuhi permintaan pengguna untuk segera, pembangun perlu mencari penyelesaian komunikasi masa nyata yang cekap, stabil dan mudah digunakan. Di antara banyak alat dan perpustakaan pilihan, golang menyediakan beberapa perpustakaan WebSocket yang sangat baik yang boleh membantu pembangun membina sistem komunikasi masa nyata dengan cepat. Artikel ini akan mengesyorkan beberapa perpustakaan WebSocket golang yang patut dipertimbangkan dan memberikan contoh kod khusus.
1. gorila/websocket
gorila/websocket ialah perpustakaan WebSocket golang yang menyediakan fungsi yang kaya dan API yang fleksibel. Ia menyokong protokol HTTP dan HTTPS dan boleh disepadukan dengan lancar dengan mana-mana rangka kerja HTTP lain. Berikut ialah contoh mudah yang menunjukkan cara menggunakan perpustakaan gorila/soket web untuk mewujudkan sambungan WebSocket:
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } func echo(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println(err) return } log.Println("Received message:", string(message)) err = conn.WriteMessage(messageType, message) if err != nil { log.Println(err) return } } } func main() { http.HandleFunc("/", echo) log.Fatal(http.ListenAndServe(":8080", nil)) }
Dalam kod di atas, kami menggunakan Penaik taraf perpustakaan gorila/soket web untuk menaik taraf sambungan HTTP kepada sambungan WebSocket. Kemudian, kami melaksanakan fungsi gema mudah yang membaca mesej yang dihantar oleh pelanggan dan mengembalikannya kepada pelanggan tidak berubah. Dengan menjalankan kod ini pada localhost, anda boleh membuka sambungan WebSocket dalam penyemak imbas anda dan mengujinya.
2. nhooyr.io/websocket
nhooyr.io/websocket ialah satu lagi pustaka WebSocket golang yang sangat mudah digunakan, yang menyediakan API yang ringkas dan prestasi yang baik. Sama seperti gorilla/websocket, nhooyr.io/websocket juga menyokong protokol HTTP dan HTTPS dan boleh disepadukan dengan lancar dengan rangka kerja HTTP biasa. Berikut ialah contoh kod yang menunjukkan cara menggunakan perpustakaan nhooyr.io/websocket untuk mewujudkan sambungan WebSocket:
package main import ( "fmt" "net/http" "time" "nhooyr.io/websocket" "nhooyr.io/websocket/wsjson" ) func echo(w http.ResponseWriter, r *http.Request) { conn, err := websocket.Accept(w, r, nil) if err != nil { http.Error(w, "Could not open websocket connection", http.StatusBadRequest) return } defer conn.Close(websocket.StatusInternalError, "Internal Server Error") ctx := r.Context() for { var message string err := wsjson.Read(ctx, conn, &message) if err != nil { fmt.Println("Read error:", err) return } fmt.Println("Received message:", message) err = wsjson.Write(ctx, conn, message) if err != nil { fmt.Println("Write error:", err) return } } } func main() { http.HandleFunc("/", echo) err := http.ListenAndServe(":8080", nil) if err != nil { fmt.Println("ListenAndServe error:", err) return } }
Dalam contoh di atas, kami menggunakan fungsi Terima pustaka nhooyr.io/websocket untuk menerima sambungan WebSocket. Kemudian, gunakan pakej wsjson dalam gelung untuk membaca dan menulis mesej. Selain itu, kami menggunakan konteks untuk mengendalikan pembatalan supaya sambungan ditutup dengan betul apabila perlu. Dengan menjalankan kod ini dan membuka penyemak imbas untuk menyambung, anda boleh melihat mesej dihantar dan diterima pada konsol.
Kesimpulan:
Dalam artikel ini, kami mengesyorkan dua perpustakaan WebSocket golang yang sangat baik, iaitu gorilla/websocket dan nhooyr.io/websocket. Kesemuanya menyediakan fungsi berkuasa dan API yang mudah digunakan, yang boleh membantu pembangun membina sistem komunikasi masa nyata dengan cepat. Walaupun kod sampel hanya menunjukkan penggunaan paling asas, fleksibiliti yang disediakan oleh perpustakaan ini membolehkan anda menyesuaikan dan memanjangkannya mengikut keperluan sebenar anda. Saya harap artikel ini dapat memberi anda cadangan dan contoh kod tentang perpustakaan WebSocket golang dan membantu anda membina sistem komunikasi masa nyata dengan lebih baik.
Atas ialah kandungan terperinci cadangan perpustakaan WebSocket golang: cepat membina sistem komunikasi masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!