Maison  >  Article  >  développement back-end  >  Recommandation de la bibliothèque golang WebSocket : créez rapidement un système de communication en temps réel

Recommandation de la bibliothèque golang WebSocket : créez rapidement un système de communication en temps réel

PHPz
PHPzoriginal
2023-12-18 15:11:211611parcourir

golang WebSocket库推荐:快速搭建实时通信系统

Recommandation de la bibliothèque golang WebSocket : construire rapidement un système de communication en temps réel

Introduction :
Avec le développement d'Internet, les systèmes de communication en temps réel deviennent de plus en plus importants. Afin de répondre à la demande d'immédiateté des utilisateurs, les développeurs doivent trouver une solution de communication en temps réel efficace, stable et facile à utiliser. Parmi les nombreux outils et bibliothèques optionnels, Golang propose d'excellentes bibliothèques WebSocket qui peuvent aider les développeurs à créer rapidement des systèmes de communication en temps réel. Cet article recommandera quelques bibliothèques Golang WebSocket qui méritent d'être prises en compte et fournira des exemples de code spécifiques.

1. gorilla/websocket
gorilla/websocket est une puissante bibliothèque Golang WebSocket qui fournit des fonctions riches et une API flexible. Il prend en charge les protocoles HTTP et HTTPS et peut être intégré de manière transparente à tout autre framework HTTP. Voici un exemple simple qui montre comment utiliser la bibliothèque gorilla/websocket pour établir une connexion WebSocket :

package main

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{
    CheckOrigin: func(r *http.Request) bool {
        return true
    },
}

func echo(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)
            return
        }

        log.Println("Received message:", string(message))

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

func main() {
    http.HandleFunc("/", echo)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Dans le code ci-dessus, nous utilisons le programme de mise à niveau de la bibliothèque gorilla/websocket pour mettre à niveau la connexion HTTP vers une connexion WebSocket. Ensuite, nous avons implémenté une simple fonction d'écho qui lit le message envoyé par le client et le renvoie au client inchangé. En exécutant ce code sur localhost, vous pouvez ouvrir une connexion WebSocket dans votre navigateur et la tester.

2. nhooyr.io/websocket
nhooyr.io/websocket est une autre bibliothèque Golang WebSocket très facile à utiliser, qui fournit une API simple et de bonnes performances. Semblable à gorilla/websocket, nhooyr.io/websocket prend également en charge les protocoles HTTP et HTTPS et peut être intégré de manière transparente aux frameworks HTTP courants. Voici un exemple de code qui montre comment utiliser la bibliothèque nhooyr.io/websocket pour établir une connexion WebSocket :

package main

import (
    "fmt"
    "net/http"
    "time"

    "nhooyr.io/websocket"
    "nhooyr.io/websocket/wsjson"
)

func echo(w http.ResponseWriter, r *http.Request) {
    conn, err := websocket.Accept(w, r, nil)
    if err != nil {
        http.Error(w, "Could not open websocket connection", http.StatusBadRequest)
        return
    }

    defer conn.Close(websocket.StatusInternalError, "Internal Server Error")

    ctx := r.Context()

    for {
        var message string

        err := wsjson.Read(ctx, conn, &message)
        if err != nil {
            fmt.Println("Read error:", err)
            return
        }

        fmt.Println("Received message:", message)

        err = wsjson.Write(ctx, conn, message)
        if err != nil {
            fmt.Println("Write error:", err)
            return
        }
    }
}

func main() {
    http.HandleFunc("/", echo)

    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        fmt.Println("ListenAndServe error:", err)
        return
    }
}

Dans l'exemple ci-dessus, nous utilisons la fonction Accept de la bibliothèque nhooyr.io/websocket pour accepter la connexion WebSocket. Ensuite, utilisez le package wsjson dans une boucle pour lire et écrire des messages. De plus, nous utilisons un contexte pour gérer l'annulation afin que la connexion soit correctement fermée si nécessaire. En exécutant ce code et en ouvrant un navigateur pour vous connecter, vous pouvez voir les messages envoyés et reçus sur la console.

Conclusion :
Dans cet article, nous avons recommandé deux excellentes bibliothèques Golang WebSocket, à savoir gorilla/websocket et nhooyr.io/websocket. Ils fournissent tous des fonctions puissantes et des API faciles à utiliser, qui peuvent aider les développeurs à créer rapidement des systèmes de communication en temps réel. Bien que l'exemple de code ne montre que l'utilisation la plus basique, la flexibilité offerte par ces bibliothèques vous permet de la personnaliser et de l'étendre en fonction de vos besoins réels. J'espère que cet article pourra vous fournir des recommandations et des exemples de code sur la bibliothèque golang WebSocket et vous aider à mieux créer des systèmes de communication 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!

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
Article précédent:Quelle fonction est lenArticle suivant:Quelle fonction est len