WebSockets menawarkan penyelesaian yang mantap untuk komunikasi dua hala masa nyata antara pelanggan dan pelayan. Tutorial ini membimbing anda membuat pelayan WebSocket dalam Go, memanfaatkan perpustakaan Gorilla WebSocket yang popular.
WebSockets menyediakan saluran komunikasi dupleks penuh yang berterusan, tidak seperti model respons permintaan HTTP. Sambungan berterusan ini membolehkan pertukaran data yang cekap dan berterusan.
Pustaka Gorilla WebSocket memudahkan pelaksanaan WebSocket dalam Go, mengurus jabat tangan, mesej I/O dan kitaran hayat sambungan.
Tutorial ini membina pelayan dan klien WebSocket asas:
Atur projek anda seperti berikut:
<code>websocket-server/ ├── main.go # Application entry point ├── handlers/ # WebSocket handler functions │ └── websocket.go # Handles WebSocket connections and messages ├── static/ # Client-side HTML/JS files │ └── index.html # Simple client interface └── go.mod # Go module file</code>
Pasang pakej Gorilla WebSocket:
go get -u github.com/gorilla/websocket
main.go
Buat main.go
:
package main import ( "fmt" "log" "net/http" "websocket-server/handlers" ) func main() { http.HandleFunc("/ws", handlers.HandleWebSocket) http.Handle("/", http.FileServer(http.Dir("./static"))) port := ":8080" fmt.Printf("Server running on http://localhost%s\n", port) log.Fatal(http.ListenAndServe(port, nil)) }
Ini menyediakan pelayan HTTP, menyediakan fail statik dan mengendalikan sambungan WebSocket di /ws
.
websocket.go
)Dalam direktori handlers
, buat websocket.go
:
package handlers import ( "fmt" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, } func HandleWebSocket(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { fmt.Println("Upgrade failed:", err) return } defer conn.Close() fmt.Println("Client connected") for { _, msg, err := conn.ReadMessage() if err != nil { fmt.Println("Read failed:", err) break } fmt.Printf("Received: %s\n", msg) if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil { fmt.Println("Write failed:", err) break } } }
Pengendali ini meningkatkan sambungan HTTP, membaca mesej dan menggemakannya kembali.
HandleWebSocket
memproses mesej masuk. Anda boleh melanjutkan ini untuk melaksanakan ciri seperti penyiaran atau kegigihan mesej.
index.html
)Buat index.html
dalam direktori static
: (Bahagian ini memerlukan pelaksanaan JavaScript sisi klien untuk menyambung ke soket web. Contoh asas ditinggalkan untuk ringkas, tetapi banyak contoh tersedia dalam talian.)
Lari go run main.go
. Kemudian, buka http://localhost:8080
dalam penyemak imbas anda (dengan JavaScript sisi klien yang sesuai disertakan).
Tutorial ini menunjukkan pelayan WebSocket asas menggunakan gorila. WebSockets sesuai untuk aplikasi masa nyata. Kembangkan asas ini dengan pengesahan, penyiaran, dan penyimpanan data seperti yang diperlukan.
[masukkan pautan repositori github di sini]
Atas ialah kandungan terperinci Membuat pelayan WebSocket dalam GORILLA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!