✨求关注~
😀博客:www.protaos.com要在Go语言的后台中监听客户端WebSocket连接的断开事件,您可以使用Gorilla
WebSocket库。以下是一个简单的示例代码,展示了如何设置WebSocket服务器并监视连接的断开事件:
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/websocket"
)
var (
upgrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true // 允许跨域请求
},
}
)
func main() {
http.HandleFunc("/ws", handleWebSocket)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handleWebSocket(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("WebSocket upgrade failed:", err)
return
}
defer conn.Close()
// 在这里执行您希望的其他处理逻辑
// 监听连接关闭事件
for {
_, _, err := conn.ReadMessage()
if err != nil {
if websocket.IsCloseError(err, websocket.CloseNormalClosure, websocket.CloseGoingAway) {
// 连接正常关闭或正在关闭
fmt.Println("连接关闭:", err)
} else {
// 连接异常关闭
fmt.Println("连接异常关闭:", err)
}
break
}
}
}
在上面的示例中,我们首先通过http.HandleFunc
将handleWebSocket
函数注册为处理WebSocket请求的处理程序。然后,我们使用http.ListenAndServe
在8080端口上启动服务器。
在handleWebSocket
函数中,我们使用upgrader.Upgrade
方法将HTTP连接升级为WebSocket连接,并在函数结束时关闭该连接。在此之后,您可以添加您希望在WebSocket连接上执行的其他逻辑。
接下来,我们使用一个无限循环来监听连接的断开事件。通过调用conn.ReadMessage
方法,我们等待客户端发送消息。如果读取消息出现错误,我们检查错误类型以确定连接是正常关闭还是异常关闭,并在控制台上打印相应的消息。
这只是一个简单的示例,您可以根据自己的需求进行调整和扩展。