Sobes.tech
Junior — Middle

Avez-vous de l'expérience avec le protocole de sockets HTTP et ses implémentations?

sobes.tech IA

Réponse de l'IA

Oui, l'expérience avec les sockets HTTP et leurs implémentations en Go est généralement liée à l'utilisation de WebSocket, un protocole qui assure une communication bidirectionnelle sur HTTP.

En Go, pour travailler avec WebSocket, on utilise souvent la bibliothèque gorilla/websocket. Elle permet de créer des serveurs et des clients qui peuvent échanger des messages en temps réel.

Exemple d'un serveur WebSocket simple en Go :

package main

import (
    "net/http"
    "github.com/gorilla/websocket"
    "log"
)

var upgrader = websocket.Upgrader{}

func wsHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Print("Erreur de mise à niveau:", err)
        return
    }
    defer conn.Close()

    for {
        messageType, message, err := conn.ReadMessage()
        if err != nil {
            log.Println("Erreur de lecture:", err)
            break
        }
        log.Printf("Reçu : %s", message)

        err = conn.WriteMessage(messageType, message)
        if err != nil {
            log.Println("Erreur d'écriture:", err)
            break
        }
    }
}

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

Ce serveur accepte des connexions WebSocket, lit les messages et les renvoie (écho). C'est un exemple de base qui peut être étendu pour implémenter divers protocoles sur WebSocket.