Maison > Article > développement back-end > Comment Go WebSocket gère-t-il les déconnexions ?
La bibliothèque Go WebSocket fournit le mécanisme CloseHandler pour gérer la déconnexion. Le type Conn déclenche l'événement Close lorsque le client ferme la connexion. Utilisez l'instruction defer pour enregistrer la fonction CloseHandler afin d'écouter l'événement et de recevoir les constantes Conn et de motif de fermeture. La fonction CloseHandler est automatiquement appelée, offrant la possibilité de gérer la déconnexion et de reprendre l'application.
Go WebSocket : Gérez les déconnexions avec élégance
Lors de la création d'applications Web en temps réel, WebSocket est un outil puissant pour la communication bidirectionnelle entre le client et le serveur. Cependant, il est essentiel de gérer les situations de déconnexion des clients pour garantir la stabilité et la fiabilité des applications.
Gestion des déconnexions
La bibliothèque Go WebSocket fournit des mécanismes intégrés pour gérer les déconnexions. Lorsque le client ferme la connexion, le type [Conn
](https://pkg.go.dev/github.com/gorilla/websocket#Conn) déclenche le Close
événement . Conn
](https://pkg.go.dev/github.com/gorilla/websocket#Conn) 类型会触发 Close
事件。
要监听此事件,可以使用 defer
语句将 [CloseHandler
](https://pkg.go.dev/github.com/gorilla/websocket#CloseHandler) 函数注册到 WebSocket 连接:
import ( "github.com/gorilla/websocket" ) func handleConnection(ws *websocket.Conn) { defer ws.CloseHandler()(ws, websocket.CloseNormalClosure) // ... }
CloseHandler
函数接受两个参数:*Conn
和一个表示关闭原因的常量(例如 websocket.CloseNormalClosure
表示正常关闭)。当连接被关闭时,该函数将被自动调用。
实战案例
以下是一个处理断开连接的简单实战案例:
package main import ( "fmt" "github.com/gorilla/websocket" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { ws, err := websocket.Upgrade(w, r, nil, nil, nil) if err != nil { fmt.Printf("upgrade error: %v", err) return } defer ws.CloseHandler()(ws, websocket.CloseNormalClosure) // 监听消息和断开连接事件 go func() { for { _, _, err := ws.ReadMessage() if err != nil { // 处理错误(例如连接断开) return } } }() }) http.ListenAndServe(":8080", nil) }
在处理断开连接方面,CloseHandler
defer
pour [CloseHandler
](https://pkg.go.dev/github.com/gorilla/websocket #CloseHandler) Fonction enregistrée sur la connexion WebSocket : 🎜rrreee🎜CloseHandler
La fonction accepte deux paramètres : *Conn
et une constante indiquant la raison de la fermeture (telle que websocket .CloseNormalClosure
signifie arrêt normal). Cette fonction sera appelée automatiquement à la fermeture de la connexion. 🎜🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un cas pratique simple de gestion des déconnexions : 🎜rrreee🎜En termes de gestion des déconnexions, CloseHandler
fournit une manière simple et élégante d'aider l'application à récupérer du client événement de déconnexion et continue de fonctionner normalement. 🎜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!