Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menggunakan Go dan http.Transport untuk komunikasi WebSocket?

Bagaimana untuk menggunakan Go dan http.Transport untuk komunikasi WebSocket?

王林
王林asal
2023-07-21 18:49:14843semak imbas

Bagaimana untuk menggunakan Go dan http.Transport untuk komunikasi WebSocket?

WebSocket ialah protokol yang menyediakan komunikasi dua hala dalam aplikasi rangkaian. Ia membolehkan pelayan untuk secara aktif menolak mesej kepada pelanggan tanpa memerlukan pelanggan untuk memulakan permintaan terlebih dahulu. Dalam bahasa Go, anda boleh menggunakan http.Transport untuk mencipta dan mengurus sambungan WebSocket.

Berikut ialah contoh kod untuk komunikasi WebSocket menggunakan Go dan http.Transport:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func EchoServer(ws *websocket.Conn) {
    for {
        var message string
        err := websocket.Message.Receive(ws, &message)
        if err != nil {
            log.Println("receive failed:", err)
            break
        }
        log.Println("received:", message)

        err = websocket.Message.Send(ws, message)
        if err != nil {
            log.Println("send failed:", err)
            break
        }
        log.Println("sent:", message)
    }
}

func main() {
    http.Handle("/", websocket.Handler(EchoServer))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

Kod di atas mencipta pelayan WebSocket yang menghantar semula mesej yang diterima kepada pelanggan tidak berubah. Dalam fungsi utama, kami menggunakan http.Handle dan websocket.Handler untuk mendaftarkan fungsi EchoServer sebagai pemproses. Kemudian gunakan http.ListenAndServe untuk memulakan pelayan mendengar pada port 8080.

Di sisi pelanggan, kami boleh menggunakan http.Transport untuk membuat sambungan WebSocket dan menghantar serta menerima data melalui kaedah Hantar dan Terima. Berikut ialah contoh kod pelanggan mudah:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func main() {
    origin := "http://localhost/"
    url := "ws://localhost:8080/"
    ws, err := websocket.Dial(url, "", origin)
    if err != nil {
        log.Fatal("dial failed:", err)
    }

    message := "Hello, WebSocket!"
    err = websocket.Message.Send(ws, message)
    if err != nil {
        log.Fatal("send failed:", err)
    }

    var response string
    err = websocket.Message.Receive(ws, &response)
    if err != nil {
        log.Fatal("receive failed:", err)
    }

    fmt.Println("received:", response)
}

Dalam kod di atas, kami menggunakan websocket.Dail untuk membuat sambungan WebSocket. Kemudian gunakan kaedah websocket.Message.Send untuk menghantar mesej dan gunakan websocket.Message.Receive untuk menerima mesej yang dikembalikan oleh pelayan.

Dengan contoh kod di atas, kami boleh membuat dan mengurus sambungan WebSocket dengan mudah menggunakan Go dan http.Transport. WebSocket menyediakan keupayaan komunikasi dua hala yang cekap dan masa nyata untuk aplikasi dan sesuai untuk banyak senario aplikasi yang berbeza. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Go dan http.Transport untuk komunikasi WebSocket?. 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