Maison > développement back-end > Golang > le corps du texte

Comment maintenir les connexions WebSocket actives avec Go.net/websocket ?

Linda Hamilton
Libérer: 2024-11-02 12:01:02
original
762 Les gens l'ont consulté

How to Keep WebSocket Connections Alive with Go.net/websocket?

Maintenir les connexions WebSocket avec Code.google.com/p/go.net/websocket

Les connexions WebSocket nécessitent un échange de données périodique pour rester actives. Dans le cadre du protocole WebSocket, un mécanisme de ping-pong est utilisé pour maintenir le rythme cardiaque de la connexion. Cela garantit que le client et le serveur envoient et reçoivent des données de manière cohérente, empêchant ainsi l'expiration de la connexion.

Support des fonctionnalités WebSocket

Code.google.com/p/go.net/ websocket ne supporte pas nativement le protocole ping-pong. Par conséquent, il est nécessaire de mettre en œuvre une solution personnalisée pour maintenir la connexion active.

Solution pour maintenir la connexion active

Une solution simple et efficace consiste à envoyer périodiquement des messages ping au client depuis le serveur . Ces messages ping déclencheront une réponse pong du client, indiquant que la connexion est active. Si une réponse pong n'est pas reçue dans un délai d'expiration spécifié, le serveur peut fermer la connexion.

Voici une solution immédiate pour implémenter ce mécanisme à l'aide de code.google.com/p/go.net/ websocket :

func keepAlive(c *websocket.Conn, timeout time.Duration) {
    lastResponse := time.Now()
    c.SetPongHandler(func(msg string) error {
        lastResponse = time.Now()
        return nil
    })

    go func() {
        for {
            err := c.WriteMessage(websocket.PingMessage, []byte("keepalive"))
            if err != nil {
                return 
            }   
            time.Sleep(timeout / 2)
            if (time.Since(lastResponse) > timeout) {
                c.Close()
                return
            }
        }
    }()
}
Copier après la connexion

En implémentant cette solution, vous pouvez maintenir des connexions WebSocket actives même en l'absence d'échange régulier de données.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal