Rumah >pembangunan bahagian belakang >Golang >Menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket
Memandangkan Internet terus berkembang, permintaan untuk aplikasi web juga semakin meningkat. Apa yang diikuti ialah keperluan untuk komunikasi masa nyata, dan Websocket muncul. Gin ialah rangka kerja Web yang cekap berdasarkan Golang Fungsi komunikasi Websocket boleh dilaksanakan dengan mudah melalui rangka kerja Gin.
Artikel ini akan memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket.
Sebelum anda mula menggunakan rangka kerja Gin, anda perlu memasang rangka kerja Gin terlebih dahulu. Ia boleh dipasang melalui arahan berikut:
go get -u github.com/gin-gonic/gin
Selepas memasang rangka kerja Gin, kita boleh mula mencipta aplikasi Gin. Cipta fail app.go
dan laksanakannya mengikut kod berikut:
package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() router.GET("/ping", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) router.Run(":8080") }
Kod di atas mencipta aplikasi Gin dengan port pendengaran 8080. Mengakses http://localhost:8080/ping
dalam penyemak imbas akan mengembalikan respons JSON.
Seterusnya, kami akan menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket. Kami akan mencipta fail websocket.go
dan ikuti langkah di bawah:
Sebelum kita mula, kita perlu mengimport dependencies berikut:
import ( "log" "net/http" "github.com/gorilla/websocket" "github.com/gin-gonic/gin" )
Di sini kita ada rangka kerja Gin yang diimport, perpustakaan soket web Gorilla dan log dan net/http dalam perpustakaan standard Go.
Kami mentakrifkan laluan Websocket melalui rangka kerja Gin:
router.GET("/ws", func(c *gin.Context) { wsHandler(c.Writer, c.Request) })
Kami mentakrifkan fungsi wsHandler
, Digunakan untuk mengendalikan sambungan Websocket:
var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return true }, } func wsHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() for { // 读取消息 _, msg, err := conn.ReadMessage() if err != nil { log.Println(err) return } // 处理消息 log.Printf("收到消息: %s ", msg) // 回复消息 err = conn.WriteMessage(websocket.TextMessage, []byte("已收到消息!")) if err != nil { log.Println(err) return } } }
Fungsi di atas meningkatkan sambungan HTTP kepada sambungan Websocket dengan memanggil kaedah websocket.Upgrader
dan mengendalikan operasi baca dan tulis dalam sambungan Websocket. Dalam kod tersebut, kami mula-mula menggunakan kaedah upgrader.Upgrade
untuk menaik taraf sambungan HTTP kepada sambungan Websocket. Kemudian, dalam gelung tak terhingga, gunakan kaedah conn.ReadMessage
untuk membaca data mesej pelanggan, mencetak mesej yang dibaca, dan kemudian gunakan kaedah conn.WriteMessage
untuk mengembalikan mesej balasan kepada pelanggan.
Operasi baca dan tulis soket web ialah proses menyekat, jadi ia perlu dilakukan dalam gelung tak terhingga. Gelung akan keluar apabila pelanggan memutuskan sambungan dari Websocket.
Selepas menulis kod di atas, kita boleh menguji sambungan Websocket melalui langkah berikut:
go run app.go
http://localhost:8080/ws
dalam penyemak imbasvar websocket = new WebSocket("ws://localhost:8080/ws"); websocket.onopen = function(evt) { console.log("连接成功!"); websocket.send("Hello WebSocket!"); }; websocket.onmessage = function(evt) { console.log("收到消息:" + evt.data); }; websocket.onclose = function(evt) { console.log("连接已关闭!"); };
Dalam kod di atas, kami menggunakan API WebSocket untuk mewujudkan sambungan ke Websocket dan menghantar mesej. Apabila sambungan ke Websocket berjaya diwujudkan, konsol akan mengeluarkan "Sambungan berjaya!"; apabila mesej balasan daripada Websocket diterima, konsol akan mengeluarkan "Mesej diterima: Mesej diterima!"; stesen akan mengeluarkan "Sambungan ditutup!".
Melalui langkah di atas, kami berjaya melaksanakan fungsi komunikasi Websocket menggunakan rangka kerja Gin. Rangka kerja Gin menyediakan API yang kaya yang membolehkan kami menjalankan pembangunan web dengan mudah. Websocket ialah mekanisme penting untuk merealisasikan komunikasi masa nyata Melalui gabungan rangka kerja Gin dan Websocket, kami boleh membangunkan aplikasi Web dengan fungsi komunikasi masa nyata dengan lebih mudah dan cepat.
Atas ialah kandungan terperinci Menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!