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

Bagaimana untuk membina pelayan WebSocket menggunakan bahasa Go

WBOY
WBOYasal
2023-06-04 08:40:461702semak imbas

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
  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
        }
    }
}

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

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.

  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");
};

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
  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!

Kenyataan:
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