Maison >développement back-end >Golang >Comment créer un serveur WebSocket en utilisant le langage Go

Comment créer un serveur WebSocket en utilisant le langage Go

WBOY
WBOYoriginal
2023-06-04 08:40:461707parcourir

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.

  1. Comprendre le protocole WebSocket

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.

  1. Installez la bibliothèque Gorilla WebSocket

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
  1. Créer un serveur 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().

  1. Exécution du serveur WebSocket

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.

  1. Test du serveur WebSocket

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
  1. Résumé

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!

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