当前位置: > > > > 如何在 go Fiber/websocket/v2 中设置状态代码和原因
如何在 go Fiber/websocket/v2 中设置状态代码和原因
来源:stackoverflow
2024-04-27 16:24:40
0浏览
收藏
哈喽!今天心血来潮给大家带来了《如何在 go Fiber/websocket/v2 中设置状态代码和原因》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!
问题内容
这是前端代码,我使用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
}
这是后端的代码。我使用 go Fiber 和 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
}
}))
我尝试设置自定义返回代码和原因,但似乎不起作用,因为
newSocket.onclose = (event) => {
console.log(`Socket connection closed: ${event.reason}`);
setSocket(null); // Set the socket to null after closing
}
我在 event.reason 和 event.code 中始终得到空结果 1006
如何正确设置代码和推理?
我正在使用 “github.com/gocarbon/fibre/v2” “github.com/go Fiber/websocket/v2”
正确答案
一个:
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
}
到这里,我们也就讲完了《如何在 go Fiber/websocket/v2 中设置状态代码和原因》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注米云公众号,带你了解更多关于的知识点!
