Heim  >  Artikel  >  Backend-Entwicklung  >  So legen Sie Statuscode und Grund in go Fiber/websocket/v2 fest

So legen Sie Statuscode und Grund in go Fiber/websocket/v2 fest

PHPz
PHPznach vorne
2024-02-09 11:42:18667Durchsuche

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

In der Sprache Fiber/Websocket/v2 of Go ist das Festlegen von Statuscode und Grund eine häufige Anforderung. Durch das Festlegen des Statuscodes und des Grunds können wir dem Kunden detaillierte Informationen darüber geben, wie die Anfrage bearbeitet wurde. In diesem Artikel zeigen wir Ihnen, wie Sie ganz einfach Statuscodes und Gründe in Fiber/websocket/v2 festlegen. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, dieser Artikel bietet Ihnen klare Anleitungen und praktischen Beispielcode. Lesen Sie weiter und legen Sie los!

Frageninhalt

Dies ist der Front-End-Code, ich verwende 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
}

Dies ist der Code für das Backend. Ich verwende Go Fiber und 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
        }
}))

Ich habe versucht, einen benutzerdefinierten Rückgabecode und Grund festzulegen, aber es scheint nicht zu funktionieren, weil

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

Ich erhalte immer das leere Ergebnis 1006 in event.reason und event.code

Wie richte ich Code und Inferenz richtig ein?

Ich benutze "github.com/gocarbon/fibre/v2" „github.com/go Fiber/websocket/v2“

Workaround

Schreiben eine Abschlussnachricht Close(), bevor Sie anrufen :

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
}

Das obige ist der detaillierte Inhalt vonSo legen Sie Statuscode und Grund in go Fiber/websocket/v2 fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen