Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk membina pelayan WebSocket menggunakan bahasa Go
WebSockets ialah protokol rangkaian lanjutan yang membenarkan komunikasi dua hala antara klien dan pelayan melalui satu sambungan TCP. WebSockets menyokong penghantaran data masa nyata, permainan dalam talian, bilik sembang dan aplikasi lain, jadi ia sangat popular di kalangan pembangun.
Bahasa Go ialah bahasa pengaturcaraan berprestasi tinggi dan ringkas sesuai untuk membina pelayan WebSockets. Artikel ini akan memperkenalkan secara terperinci cara membina pelayan WebSocket menggunakan bahasa Go.
Protokol WebSocket menggunakan pengepala jabat tangan dan Naik Taraf protokol HTTP untuk menaik taraf kepada sambungan WebSocket. Sambungan WebSocket sentiasa menggunakan carriage return dan aksara suapan baris sebagai penamat mesej. Mesej WebSocket boleh berupa teks atau data binari.
Pustaka Gorilla WebSocket ialah salah satu perpustakaan WebSocket paling popular dalam bahasa Go. Ia menyediakan pelaksanaan klien dan pelayan WebSocket. Anda boleh memasang perpustakaan WebSocket Gorilla menggunakan arahan berikut:
go get github.com/gorilla/websocket
Berikut ialah contoh pelayan WebSocket yang mudah:
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func main() { http.HandleFunc("/echo", echoHandler) log.Fatal(http.ListenAndServe(":8080", nil)) } func echoHandler(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) break } log.Printf("Received message: %s ", message) err = conn.WriteMessage(messageType, message) if err != nil { log.Println(err) break } } }
Di atas Dalam kod, fungsi echoHandler mengendalikan semua sambungan WebSocket. Ia menggunakan Penaik Taraf yang disediakan oleh perpustakaan WebSocket Gorilla untuk menaik taraf permintaan HTTP kepada sambungan WebSocket. Selepas sambungan dinaik taraf, pelayan membaca mesej daripada klien menggunakan conn.ReadMessage() dan menggemakan semula mesej itu kepada klien menggunakan conn.WriteMessage().
Sekarang, jalankan pelayan WebSocket. Dalam terminal, pergi ke direktori di mana fail Go terletak dan jalankan arahan berikut:
go run main.go
Pada ketika ini, anda akan melihat output yang serupa dengan yang berikut:
2021/08/11 15:32:31 Listening on port 8080...
Ini bermakna bahawa anda Pelayan sedang mendengar pada port 8080 untuk semua sambungan masuk.
Sekarang anda telah berjaya mencipta pelayan WebSocket, anda boleh mengujinya menggunakan klien WebSocket. Adalah disyorkan untuk menggunakan penyemak imbas Chrome untuk ujian kerana penyemak imbas Chrome mempunyai klien WebSocket terbina dalam. Buka alat pembangun dalam Chrome, tukar ke tab konsol dan masukkan kod berikut:
var ws = new WebSocket("ws://localhost:8080/echo"); ws.onopen = function() { console.log("Connected"); ws.send("Hello, World!"); }; ws.onmessage = function(event) { console.log("Received message: " + event.data); }; ws.onclose = function() { console.log("Disconnected"); };
Chrome akan mewujudkan sambungan WebSocket ke pelayan anda dan menghantar "Helo, Dunia!" Pelayan anda akan menggemakan mesej dan menghantarnya kembali kepada pelanggan. Anda akan melihat output yang serupa dengan yang berikut dalam konsol:
Connected Received message: Hello, World! Disconnected
Artikel ini menerangkan cara membina pelayan WebSocket menggunakan perpustakaan Gorilla WebSocket dan bahasa Go . Kini anda tahu cara menggunakan protokol WebSocket untuk melaksanakan keupayaan komunikasi masa nyata. WebSocket membolehkan anda menggunakan sambungan TCP tunggal untuk memindahkan data tanpa membuat sambungan baharu untuk setiap permintaan. Ini meningkatkan prestasi dan kebolehskalaan, menjadikannya berbaloi untuk digunakan dalam aplikasi.
Atas ialah kandungan terperinci Bagaimana untuk membina pelayan WebSocket menggunakan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!