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.