Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk membina pelayan WebSocket menggunakan bahasa Go

Bagaimana untuk membina pelayan WebSocket menggunakan bahasa Go

WBOY
Lepaskan: 2023-06-04 08:40:46
asal
1765 orang telah melayarinya

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.

  1. Fahami protokol WebSocket

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.

  1. Pasang perpustakaan Gorilla WebSocket

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
Salin selepas log masuk
  1. Cipta Pelayan 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
        }
    }
}
Salin selepas log masuk

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().

  1. Jalankan pelayan WebSocket

Sekarang, jalankan pelayan WebSocket. Dalam terminal, pergi ke direktori di mana fail Go terletak dan jalankan arahan berikut:

go run main.go
Salin selepas log masuk

Pada ketika ini, anda akan melihat output yang serupa dengan yang berikut:

2021/08/11 15:32:31 Listening on port 8080...
Salin selepas log masuk

Ini bermakna bahawa anda Pelayan sedang mendengar pada port 8080 untuk semua sambungan masuk.

  1. Menguji Pelayan WebSocket

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");
};
Salin selepas log masuk

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
Salin selepas log masuk
  1. Ringkasan

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan