How to set status code and reason in go Fiber/websocket/v2

PHPz
Release: 2024-02-09 11:42:18
forward
638 people have browsed it

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

In Fiber/websocket/v2 of Go language, setting status code and reason is a common requirement. By setting the status code and reason, we can provide the client with detailed information about how the request was handled. In this article, we will show you how to easily set status codes and reasons in Fiber/websocket/v2. Whether you are a beginner or an experienced developer, this article will provide you with clear guidance and practical example code. Read on and let’s get started!

Question content

This is the front-end code, I use 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
}
Copy after login

This is the code for the backend. I use go Fiber and 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
        }
}))

Copy after login

I tried setting a custom return code and reason but it doesn't seem to work because

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

I always get empty results in event.reason and event.code 1006

How to set up code and inference correctly?

I am using "github.com/gocarbon/fibre/v2" "github.com/go Fiber/websocket/v2"

Solution

Write a before calling Close() Close message:

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
}
Copy after login

The above is the detailed content of How to set status code and reason in go Fiber/websocket/v2. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!