Maison >développement back-end >Golang >Comment définir le code d'état et la raison dans 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 !
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 }
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 } }))
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 }
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"
É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 }
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!