Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menetapkan kod status dan sebab dalam go Fiber/websocket/v2

Bagaimana untuk menetapkan kod status dan sebab dalam go Fiber/websocket/v2

PHPz
PHPzke hadapan
2024-02-09 11:42:18620semak imbas

如何在 go Fiber/websocket/v2 中设置状态代码和原因

Dalam Fiber/websocket/v2 bahasa Go, menetapkan kod status dan sebab adalah keperluan biasa. Dengan menetapkan kod status dan sebab, kami boleh memberikan pelanggan maklumat terperinci tentang cara permintaan itu dikendalikan. Dalam artikel ini, kami akan menunjukkan kepada anda cara mudah menetapkan kod status dan sebab dalam Fiber/websocket/v2. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan memberikan anda panduan yang jelas dan kod contoh praktikal. Baca dan mari mulakan!

Kandungan soalan

Ini adalah kod bahagian hadapan, saya menggunakan react js

const newSocket = new WebSocket(`ws://localhost:8080/${roomID}/${userID}`);
setSocket(newSocket); // Set the socket in state

newSocket.onclose = (event) => {
   console.log(`Socket connection closed: ${event.code}`);
   setSocket(null); // Set the socket to null after closing
}

Ini ialah kod untuk bahagian belakang. Saya menggunakan go Fiber dan go Fiber websocket

app.Get("/:room/:id", websocket.New(func(c *websocket.Conn) {
        roomID := c.Params("room")
        room := rooms[roomID] // Get the room based on roomID

        if room == nil {
            // Handle the case when the room does not exist
            log.Printf("Room %s does not exist", roomID)
            c.Close()
            return
        }
}))

Saya cuba menetapkan kod pulangan tersuai dan alasan tetapi ia nampaknya tidak berkesan kerana

newSocket.onclose = (event) => {
      console.log(`Socket connection closed: ${event.reason}`);
      setSocket(null); // Set the socket to null after closing
    }

Saya sentiasa mendapat keputusan kosong 1006 dalam event.reason dan event.code

Bagaimana untuk menyediakan kod dan inferens dengan betul?

Saya sedang menggunakan "github.com/gocarbon/fibre/v2" "github.com/go Fiber/websocket/v2"

Penyelesaian

Tulis mesej tutup Close() sebelum membuat panggilan :

if room == nil {
    // Handle the case when the room does not exist
    log.Printf("Room %s does not exist", roomID)
    c.WriteControl(websocket.CloseMessage,
        websocket.FormatCloseMessage(websocket.CloseNormalClosure, "room does not exist"),
        time.Now().Add(time.Second))
    c.Close()
    return
}

Atas ialah kandungan terperinci Bagaimana untuk menetapkan kod status dan sebab dalam go Fiber/websocket/v2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam