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.
import (
"log" "net/http" "github.com/gorilla/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 } }
}
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.
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,
}
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 ...
})
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)
}
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!