如何在 go Fiber/websocket/v2 中设置状态代码和原因
短信预约 -IT技能 免费直播动态提醒
在Go语言的Fiber/websocket/v2中,设置状态代码和原因是一个常见的需求。通过设置状态代码和原因,我们可以向客户端提供有关请求处理情况的详细信息。在本文中,我们将向您展示如何在Fiber/websocket/v2中轻松设置状态代码和原因。无论您是初学者还是有经验的开发者,本文都将为您提供清晰的指导和实用的示例代码。继续阅读,让我们开始吧!
问题内容
这是前端代码,我使用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”
解决方法
写入一个在调用 Close()
之前关闭消息:
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 中设置状态代码和原因的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341