Maison > développement back-end > Golang > Comment définir le code d'état et la raison dans Go Fiber/websocket/v2

Comment définir le code d'état et la raison dans Go Fiber/websocket/v2

PHPz
Libérer: 2024-02-09 11:42:18
avant
677 Les gens l'ont consulté

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

Dans Fibre/websocket/v2 du langage Go, la définition du code d'état et de la raison est une exigence courante. En définissant le code de statut et le motif, nous pouvons fournir au client des informations détaillées sur la manière dont la demande a été traitée. Dans cet article, nous allons vous montrer comment définir facilement des codes d'état et des motifs dans Fiber/websocket/v2. Que vous soyez débutant ou développeur expérimenté, cet article vous fournira des conseils clairs et des exemples de code pratiques. Continuez à lire et commençons !

Contenu de la question

Ceci est le code front-end, j'utilise 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
}
Copier après la connexion

Voici le code du backend. J'utilise go Fiber et 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
        }
}))

Copier après la connexion

J'ai essayé de définir un code de retour et un motif personnalisés, mais cela ne semble pas fonctionner car

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

Je reçois toujours le résultat vide 1006 dans event.reason et event.code

Comment configurer correctement le code et l'inférence ?

J'utilise "github.com/gocarbon/fibre/v2" "github.com/go Fiber/websocket/v2"

Solution de contournement

Écrivez un message de fermeture Close() avant d'appeler  :

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
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal