Rangka kerja Gin ialah rangka kerja Web ringan yang mudah digunakan, cekap dan pantas serta menyokong protokol Socket dan TLS. Artikel ini akan memberikan penjelasan terperinci tentang sokongan Socket dan TLS bagi rangka kerja Gin dan meneroka aplikasinya dalam projek sebenar.
1. Sokongan soket
Soket ialah protokol komunikasi yang boleh menghantar data pada rangkaian. Soket ialah gabungan alamat IP dan nombor port Ia digunakan terutamanya untuk komunikasi antara proses untuk merealisasikan pembangunan aplikasi rangkaian.
Rangka kerja Gin menyokong pengaturcaraan WebSocket dan Socket berdasarkan protokol TCP. WebSocket ialah protokol dupleks penuh berdasarkan protokol TCP, yang membolehkan pelayan menolak data secara aktif kepada klien. Pengaturcaraan soket berdasarkan protokol TCP ialah protokol berdasarkan lapisan pengangkutan, yang boleh mencapai komunikasi dua hala antara pelanggan dan pelayan. Sokongan Soket rangka kerja Gin adalah sangat praktikal dan boleh digunakan untuk melaksanakan fungsi komunikasi masa nyata, seperti bilik sembang dalam talian, permainan, dsb.
Dalam rangka kerja Gin, fungsi Soket boleh dilaksanakan dengan menggunakan objek gin.Context
. Langkah-langkah khusus adalah seperti berikut:
gin.Context
dalam objek c.Request
untuk mendapatkan objek permintaan HTTP WebSocket
atau TCP
kaedah untuk membuat sambungan WebSocket atau TCP; WriteMessage
atau Write
menerima mesej daripada klien melalui ReadMessage
Read
menggunakan Close
package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "net/http" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } func main() { router := gin.Default() router.GET("/ws", func(c *gin.Context) { conn, err := upgrader.Upgrade(c.Writer, c.Request, nil) if err != nil { fmt.Println("error:", err) return } for { message := []byte("Hello, client!") err := conn.WriteMessage(websocket.TextMessage, message) if err != nil { fmt.Println("Error:", err) break } _, msg, err := conn.ReadMessage() if err != nil { fmt.Println("Error:", err) break } fmt.Printf("Message received: %s ", msg) } }) router.Run(":8080") }
Contoh ini mencipta sambungan WebSocket, menukar objek
kepada melalui parameter c.Writer
dan c.Request
dan gin.Context
objek. Kemudian gunakan pembolehubah http.ResponseWriter
untuk menaik taraf sambungan HTTP kepada sambungan WebSocket. Selepas itu, hantar mesej kepada klien melalui kaedah http.Request
dan terima mesej daripada klien melalui kaedah upgrader
. WriteMessage
ReadMessage
2. Sokongan TLS
memerlukan sijil dan fail kunci. Fail sijil digunakan untuk mengesahkan identiti pelayan, dan fail utama digunakan untuk menyulitkan penghantaran data. Sokongan TLS bagi rangka kerja Gin adalah sangat praktikal dan menyediakan penyelesaian keselamatan yang sangat berkesan untuk pembangunan aplikasi web dengan keperluan yang lebih tinggi. RunTLS
RunTLS
Berikut ialah contoh mudah:
package main import ( "github.com/gin-gonic/gin" "log" ) func main() { router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(200, "Hello, world!") }) err := router.RunTLS(":8080", "server.crt", "server.key") if err != nil { log.Fatal("Error:", err) } }
Contoh ini menggunakan kaedah
untuk memulakan pelayan HTTPS. Apabila menyambung ke pelayan, pelanggan mengesahkan identiti pelayan dan menggunakan kunci awam untuk menyulitkan pemindahan data. Fail sijil dan kunci ialah fail dan RunTLS
masing-masing. server.crt
server.key
Kesimpulan
Soket rangka kerja Gin dan sokongan TLS menyediakan fungsi dan keselamatan yang berkuasa untuk aplikasi web. Dengan sokongan Socket dan TLS rangka kerja Gin, kami boleh membangunkan aplikasi komunikasi masa nyata dan aplikasi web selamat dengan mudah. Perlu diingat bahawa apabila menggunakan sokongan TLS, kami perlu memastikan keselamatan sijil dan fail utama.
Atas ialah kandungan terperinci Penjelasan terperinci tentang sokongan Socket dan TLS bagi rangka kerja Gin dan aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!