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

PHPz
Lepaskan: 2024-02-09 11:42:18
ke hadapan
637 orang telah melayarinya

如何在 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
}
Salin selepas log masuk

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

Salin selepas log masuk

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

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

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!

Label berkaitan:
sumber:stackoverflow.com
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!