Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket

Menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket

王林
王林asal
2023-06-23 09:34:372834semak imbas

Memandangkan Internet terus berkembang, permintaan untuk aplikasi web juga semakin meningkat. Apa yang diikuti ialah keperluan untuk komunikasi masa nyata, dan Websocket muncul. Gin ialah rangka kerja Web yang cekap berdasarkan Golang Fungsi komunikasi Websocket boleh dilaksanakan dengan mudah melalui rangka kerja Gin.

Artikel ini akan memperkenalkan cara menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket.

Pasang rangka kerja Gin

Sebelum anda mula menggunakan rangka kerja Gin, anda perlu memasang rangka kerja Gin terlebih dahulu. Ia boleh dipasang melalui arahan berikut:

go get -u github.com/gin-gonic/gin

Buat aplikasi Gin

Selepas memasang rangka kerja Gin, kita boleh mula mencipta aplikasi Gin. Cipta fail app.go dan laksanakannya mengikut kod berikut:

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.Default()

    router.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })

    router.Run(":8080")
}

Kod di atas mencipta aplikasi Gin dengan port pendengaran 8080. Mengakses http://localhost:8080/ping dalam penyemak imbas akan mengembalikan respons JSON.

Gunakan rangka kerja Gin untuk melaksanakan Websocket

Seterusnya, kami akan menggunakan rangka kerja Gin untuk melaksanakan fungsi komunikasi Websocket. Kami akan mencipta fail websocket.go dan ikuti langkah di bawah:

Import dependencies

Sebelum kita mula, kita perlu mengimport dependencies berikut:

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
    "github.com/gin-gonic/gin"
)

Di sini kita ada rangka kerja Gin yang diimport, perpustakaan soket web Gorilla dan log dan net/http dalam perpustakaan standard Go.

Tentukan laluan Gin

Kami mentakrifkan laluan Websocket melalui rangka kerja Gin:

router.GET("/ws", func(c *gin.Context) {
    wsHandler(c.Writer, c.Request)
})

Tentukan fungsi pemprosesan Websocket

Kami mentakrifkan fungsi wsHandler, Digunakan untuk mengendalikan sambungan Websocket:

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
    CheckOrigin: func(r *http.Request) bool {
        return true
    },
}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }

    defer conn.Close()

    for {
        // 读取消息
        _, msg, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            return
        }

        // 处理消息
        log.Printf("收到消息: %s
", msg)

        // 回复消息
        err = conn.WriteMessage(websocket.TextMessage, []byte("已收到消息!"))
        if err != nil {
            log.Println(err)
            return
        }
    }
}

Fungsi di atas meningkatkan sambungan HTTP kepada sambungan Websocket dengan memanggil kaedah websocket.Upgrader dan mengendalikan operasi baca dan tulis dalam sambungan Websocket. Dalam kod tersebut, kami mula-mula menggunakan kaedah upgrader.Upgrade untuk menaik taraf sambungan HTTP kepada sambungan Websocket. Kemudian, dalam gelung tak terhingga, gunakan kaedah conn.ReadMessage untuk membaca data mesej pelanggan, mencetak mesej yang dibaca, dan kemudian gunakan kaedah conn.WriteMessage untuk mengembalikan mesej balasan kepada pelanggan.

Operasi baca dan tulis soket web ialah proses menyekat, jadi ia perlu dilakukan dalam gelung tak terhingga. Gelung akan keluar apabila pelanggan memutuskan sambungan dari Websocket.

Uji sambungan Websocket

Selepas menulis kod di atas, kita boleh menguji sambungan Websocket melalui langkah berikut:

  1. Mulakan aplikasi Gin: go run app.go
  2. Buka halaman http://localhost:8080/ws dalam penyemak imbas
  3. Buka alat pembangun penyemak imbas dan laksanakan kod berikut dalam konsol:
var websocket = new WebSocket("ws://localhost:8080/ws");

websocket.onopen = function(evt) {
    console.log("连接成功!");
    websocket.send("Hello WebSocket!");
};

websocket.onmessage = function(evt) {
    console.log("收到消息:" + evt.data);
};

websocket.onclose = function(evt) {
    console.log("连接已关闭!");
};

Dalam kod di atas, kami menggunakan API WebSocket untuk mewujudkan sambungan ke Websocket dan menghantar mesej. Apabila sambungan ke Websocket berjaya diwujudkan, konsol akan mengeluarkan "Sambungan berjaya!"; apabila mesej balasan daripada Websocket diterima, konsol akan mengeluarkan "Mesej diterima: Mesej diterima!"; stesen akan mengeluarkan "Sambungan ditutup!".

Ringkasan

Melalui langkah di atas, kami berjaya melaksanakan fungsi komunikasi Websocket menggunakan rangka kerja Gin. Rangka kerja Gin menyediakan API yang kaya yang membolehkan kami menjalankan pembangunan web dengan mudah. Websocket ialah mekanisme penting untuk merealisasikan komunikasi masa nyata Melalui gabungan rangka kerja Gin dan Websocket, kami boleh membangunkan aplikasi Web dengan fungsi komunikasi masa nyata dengan lebih mudah dan cepat.

Atas ialah kandungan terperinci Menggunakan rangka kerja Gin untuk melaksanakan fungsi 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