Maison > développement back-end > Golang > Comment utiliser Websocket dans Golang

Comment utiliser Websocket dans Golang

PHPz
Libérer: 2023-04-21 14:59:34
original
959 Les gens l'ont consulté

Avec le développement d'Internet, l'utilisation d'applications Web est devenue de plus en plus courante, rendant le protocole WebSocket de plus en plus populaire. D’un autre côté, la croissance rapide de Golang en a fait un langage de choix pour les WebSockets. Dans cet article, nous présenterons comment utiliser Golang pour la programmation WebSocket.

Qu'est-ce que WebSocket ?

Le protocole WebSocket est un protocole de communication bidirectionnel en temps réel qui permet aux applications Web d'interagir avec les serveurs. Contrairement au protocole HTTP, le protocole WebSocket permet au serveur et au client d'envoyer et de recevoir des messages à tout moment, permettant ainsi une communication en temps réel.

De manière générale, les applications Web utilisent le protocole WebSocket pour l'échange de données en temps réel, comme le chat en ligne, les hotspots en temps réel, les jeux multijoueurs, etc. Grâce aux WebSockets, les programmeurs peuvent établir une communication efficace en temps réel avec une petite quantité de code.

Implémentation de WebSocket à l'aide de Golang

Golang est le langage parfait car il fournit une prise en charge intégrée de RPC et Socket. En utilisant le package net/http de Golang, nous pouvons facilement créer un serveur WebSocket.

  1. Import package

import (

"log"
"net/http"
"github.com/gorilla/websocket"
Copier après la connexion

)

  1. Créer un gestionnaire WebSocket

Dans cette étape, nous créerons le serveur pour gérer les requêtes WebSocket. Pour chaque connexion WebSocket, nous devons créer un gestionnaire pour lire et écrire des messages.

func websocketHandler(w http.ResponseWriter, r *http.Request) {

ws, err := websocket.Upgrade(w, r, nil, 1024, 1024)
if err != nil {
    log.Println(err)
    return
}
defer ws.Close()

for {
    messageType, p, err := ws.ReadMessage()
    if err != nil {
        log.Println(err)
        break
    }
    log.Println(string(p))
    err = ws.WriteMessage(messageType, []byte("Server: got your message"))
    if err != nil {
        log.Println(err)
        break
    }
}
Copier après la connexion

}

Dans ce gestionnaire, nous mettons d'abord à niveau la requête HTTP vers une connexion WebSocket. Nous effectuons ensuite une boucle pour chaque connexion en lisant le message envoyé par le client et en affichant le message dans la console. Enfin, nous réécrivons le message au client pour lui faire savoir que nous avons bien reçu le message.

  1. Configurer le routage

Ensuite, nous devons ajouter le routage Web Socket à notre serveur. Dans cet exemple, nous utiliserons la bibliothèque Gorilla WebSocket. Vous pouvez utiliser des alternatives de bibliothèque standard - par exemple :

http.HandleFunc("/echo", websocketHandler)

Nécessite une importation manuelle de la bibliothèque Gorilla WebSocket :

var upgrader = websocket.Upgrader{

ReadBufferSize:  1024,
WriteBufferSize: 1024,
Copier après la connexion

}

http .HandleFunc ("/ws", func(w http.ResponseWriter, r *http.Request) {

// Upgrade the HTTP server connection to a web socket connection
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
    log.Println(err)
    return
}

// ... WebSocket connection logic ...
Copier après la connexion

})

  1. Exécutez le serveur

Une fois vos routes configurées, vous pouvez démarrer sur le serveur via Connexion WebSocket :

func main() {

log.Println("Starting server on :8080")
http.HandleFunc("/ws", websocketHandler)
err := http.ListenAndServe(":8080", nil)
log.Fatal(err)
Copier après la connexion

}

Vous pouvez ensuite démarrer le serveur et connecter le client. Ouvrez une nouvelle fenêtre de terminal et utilisez la commande curl pour envoyer du texte au serveur via WebSocket :

curl -H "Connexion : mise à niveau" -H "Mise à niveau : websocket" -H "Hôte : localhost:8080" -H "Origine : http://localhost:8080" http://localhost:8080/ws -v

Vous pouvez également utiliser des outils en ligne tels que le plug-in Chrome Simple WebSocket Client pour tester.

Résumé

WebSocket est un excellent choix pour la communication en temps réel. Grâce à la prise en charge intégrée de RPC et Socket fournie par Golang, nous pouvons facilement créer un serveur WebSocket. Dans cet article, nous décrivons les étapes de base pour créer un WebSocket à l'aide de Golang. Maintenant que vous maîtrisez les bases des WebSockets dans Golang, vous pouvez commencer à créer vos propres applications en temps réel.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal