Maison  >  Article  >  développement back-end  >  Comment utiliser Go et http.Transport pour la communication WebSocket ?

Comment utiliser Go et http.Transport pour la communication WebSocket ?

王林
王林original
2023-07-21 18:49:14782parcourir

Comment utiliser Go et http.Transport pour la communication WebSocket ?

WebSocket est un protocole qui permet une communication bidirectionnelle dans les applications réseau. Il permet au serveur de transmettre activement des messages au client sans que celui-ci ait à lancer une demande au préalable. En langage Go, vous pouvez utiliser http.Transport pour créer et gérer des connexions WebSocket.

Voici un exemple de code pour la communication WebSocket utilisant Go et http.Transport :

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func EchoServer(ws *websocket.Conn) {
    for {
        var message string
        err := websocket.Message.Receive(ws, &message)
        if err != nil {
            log.Println("receive failed:", err)
            break
        }
        log.Println("received:", message)

        err = websocket.Message.Send(ws, message)
        if err != nil {
            log.Println("send failed:", err)
            break
        }
        log.Println("sent:", message)
    }
}

func main() {
    http.Handle("/", websocket.Handler(EchoServer))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

Le code ci-dessus crée un serveur WebSocket qui renvoie les messages reçus au client inchangés. Dans la fonction principale, nous utilisons http.Handle et websocket.Handler pour enregistrer la fonction EchoServer en tant que processeur. Utilisez ensuite http.ListenAndServe pour démarrer le serveur en écoute sur le port 8080.

Côté client, nous pouvons utiliser http.Transport pour créer une connexion WebSocket et envoyer et recevoir des données via les méthodes Send et Receiver. Voici un exemple de code client simple :

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func main() {
    origin := "http://localhost/"
    url := "ws://localhost:8080/"
    ws, err := websocket.Dial(url, "", origin)
    if err != nil {
        log.Fatal("dial failed:", err)
    }

    message := "Hello, WebSocket!"
    err = websocket.Message.Send(ws, message)
    if err != nil {
        log.Fatal("send failed:", err)
    }

    var response string
    err = websocket.Message.Receive(ws, &response)
    if err != nil {
        log.Fatal("receive failed:", err)
    }

    fmt.Println("received:", response)
}

Dans le code ci-dessus, nous utilisons websocket.Dial pour créer une connexion WebSocket. Utilisez ensuite la méthode websocket.Message.Send pour envoyer des messages et utilisez websocket.Message.Receive pour recevoir les messages renvoyés par le serveur.

Avec l'exemple de code ci-dessus, nous pouvons facilement créer et gérer des connexions WebSocket à l'aide de Go et http.Transport. WebSocket offre des capacités de communication bidirectionnelles efficaces et en temps réel pour les applications et convient à de nombreux scénarios d'application différents. J'espère que cet article vous aidera !

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!

Déclaration:
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