WebSockets est un protocole réseau avancé qui permet une communication bidirectionnelle entre le client et le serveur via une seule connexion TCP. Les WebSockets prennent en charge la transmission de données en temps réel, les jeux en ligne, les salons de discussion et d'autres applications, ils sont donc très populaires parmi les développeurs.
Le langage Go est un langage de programmation concis et performant adapté à la création de serveurs WebSockets. Cet article présentera en détail comment créer un serveur WebSocket en utilisant le langage Go.
Le protocole WebSocket utilise l'en-tête handshake et Upgrade du protocole HTTP pour passer à une connexion WebSocket. Les connexions WebSocket utilisent toujours des caractères de retour chariot et de saut de ligne comme terminateurs de message. Les messages WebSocket peuvent être du texte ou des données binaires.
La bibliothèque Gorilla WebSocket est l'une des bibliothèques WebSocket les plus populaires dans le langage Go. Elle fournit des implémentations de clients et de serveurs WebSocket. Vous pouvez installer la bibliothèque Gorilla WebSocket à l'aide de la commande suivante :
go get github.com/gorilla/websocket
Voici un exemple simple de serveur WebSocket :
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func main() { http.HandleFunc("/echo", echoHandler) log.Fatal(http.ListenAndServe(":8080", nil)) } func echoHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println(err) break } log.Printf("Received message: %s ", message) err = conn.WriteMessage(messageType, message) if err != nil { log.Println(err) break } } }
Dans le code ci-dessus, la fonction echoHandler gère toutes les connexions WebSocket. Il utilise le Upgrader fourni par la bibliothèque Gorilla WebSocket pour mettre à niveau les requêtes HTTP vers les connexions WebSocket. Une fois la connexion mise à niveau, le serveur lit le message du client à l'aide de conn.ReadMessage() et renvoie le message au client à l'aide de conn.WriteMessage().
Maintenant, exécutez le serveur WebSocket. Dans le terminal, accédez au répertoire où se trouvent les fichiers Go et exécutez la commande suivante :
go run main.go
À ce stade, vous devriez voir un résultat similaire à celui-ci :
2021/08/11 15:32:31 Listening on port 8080...
Cela signifie que votre serveur écoute sur le port 8080. Tous les messages entrants relations.
Maintenant que vous avez créé avec succès le serveur WebSocket, vous pouvez le tester à l'aide du client WebSocket. Il est recommandé d'utiliser le navigateur Chrome pour les tests, car le navigateur Chrome intègre un client WebSocket. Ouvrez les outils de développement dans Chrome, passez à l'onglet console et entrez le code suivant :
var ws = new WebSocket("ws://localhost:8080/echo"); ws.onopen = function() { console.log("Connected"); ws.send("Hello, World!"); }; ws.onmessage = function(event) { console.log("Received message: " + event.data); }; ws.onclose = function() { console.log("Disconnected"); };
Chrome établira une connexion WebSocket à votre serveur et enverra un message "Hello, World!". Votre serveur fera écho au message et le renverra au client. Vous devriez voir un résultat similaire à celui-ci dans votre console :
Connected Received message: Hello, World! Disconnected
Cet article explique comment créer un serveur WebSocket à l'aide de la bibliothèque Gorilla WebSocket et du langage Go. Vous savez désormais comment utiliser le protocole WebSocket pour implémenter des capacités de communication en temps réel. WebSocket vous permet d'utiliser une seule connexion TCP pour transférer des données sans établir une nouvelle connexion pour chaque requête. Cela améliore les performances et l'évolutivité, ce qui rend son utilisation intéressante dans les applications.
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!