Maison > développement back-end > Golang > Comment utiliser les Websockets dans Go pour communiquer en temps réel ?

Comment utiliser les Websockets dans Go pour communiquer en temps réel ?

WBOY
Libérer: 2023-05-11 16:07:41
original
1966 Les gens l'ont consulté

Websockets est une technologie qui établit une communication bidirectionnelle entre un navigateur Web et un serveur, permettant aux applications Web de transmettre des données au client en temps réel. Par exemple, les Websockets peuvent être utilisés pour mettre en œuvre une salle de discussion en ligne, affichant le contenu du chat en temps réel directement dans l'application Web sans actualiser la page.

Dans cet article, nous présenterons comment utiliser les Websockets en langage Go pour la communication en temps réel. Nous utiliserons la bibliothèque Gorilla Websockets pour y parvenir. Cette bibliothèque fournit des fonctions utilitaires très pratiques et des exemples de code.

1. Installez Gorilla Websockets

Avant de commencer, nous devons installer Gorilla Websockets. Vous pouvez l'installer via la commande suivante :

go get github.com/gorilla/websocket
Copier après la connexion

2. Établissez une connexion Websockets

Ensuite, nous pouvons commencer à écrire du code pour établir une connexion Websockets. Nous devons définir une fonction de gestionnaire HTTP pour gérer les connexions Websockets. Voici un exemple de code simple :

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
}

func handleWebsocket(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, p, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            return
        }
        log.Printf("received: %s", p)

        err = conn.WriteMessage(messageType, p)
        if err != nil {
            log.Println(err)
            return
        }
    }
}

func main() {
    http.HandleFunc("/ws", handleWebsocket)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
Copier après la connexion

Dans cet exemple de code, nous définissons une fonction handleWebsocket pour gérer les connexions Websockets. Cette fonction utilise Upgrader pour mettre à niveau le gestionnaire HTTP vers le gestionnaire Websockets. Upgrader est une structure qui définit certains paramètres, tels que ReadBufferSize et WriteBufferSize, qui sont utilisés pour définir la taille du tampon de lecture et d'écriture de la connexion.

Dans la fonction, nous lisons le message de la connexion, imprimons le message dans le terminal et le renvoyons au client. Si une erreur survient lors de la lecture ou de l'écriture, la connexion est interrompue. Dans la fonction principale, nous enregistrons la fonction handleWebsocket dans le processeur HTTP et démarrons le serveur HTTP.

3. Utilisez Websockets pour la communication en temps réel

Maintenant, nous avons écrit un processeur Websockets simple que nous pouvons utiliser pour la communication en temps réel. Ensuite, écrivons une application Web simple afin de pouvoir tester notre connexion Websockets.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Websockets Example</title>
  </head>
  <body>
    <input id="message-input" type="text" placeholder="Type a message...">
    <button id="send-button">Send</button>
    <ul id="message-list"></ul>
    <script>
      const socket = new WebSocket('ws://localhost:8080/ws');
      socket.addEventListener('message', event => {
        const li = document.createElement('li');
        li.textContent = event.data;
        document.querySelector('#message-list').appendChild(li);
      });
      document.querySelector('#send-button').addEventListener('click', () => {
        const input = document.querySelector('#message-input');
        const value = input.value.trim();
        if (value) {
          socket.send(value);
          input.value = '';
        }
      });
    </script>
  </body>
</html>
Copier après la connexion

Dans cet exemple d'application Web, nous créons une page qui contient une zone de saisie de texte, un bouton d'envoi et une liste de messages. Lorsque l'utilisateur saisit un message dans la zone de texte et clique sur le bouton d'envoi, nous l'envoyons au serveur à l'aide d'une connexion Websockets. Le serveur renvoie ensuite le message et l'affiche dans la liste. Chaque fois que nous recevons un nouveau message, nous créons un nouvel élément de liste et l'ajoutons à la liste.

4. Conclusion

Dans cet article, nous avons présenté comment utiliser les Websockets dans Go pour la communication en temps réel. Nous avons utilisé la bibliothèque Gorilla Websockets pour établir une connexion Websockets et avons écrit une application Web simple pour tester notre connexion. Les Websockets sont une technologie puissante qui peut être utilisée pour mettre en œuvre de nombreuses applications en temps réel, telles que des salons de discussion en ligne, la surveillance des données et des tableaux de bord en temps réel, etc. J'espère que cet article vous sera utile.

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!

Étiquettes associées:
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