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

PHPz
Freigeben: 2024-02-09 11:42:18
nach vorne
637 Leute haben es durchsucht

如何在 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
}
Nach dem Login kopieren

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

Nach dem Login kopieren

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
    }
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!