WebSocket-Bibliothek Gorilla für Go (Golang) – vollständige Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Gorilla WebSocket-Bibliothek für Go (Golang)



Gorilla WebSocket ist eine der beliebtesten und stabilsten Bibliotheken für die Arbeit mit dem WebSocket-Protokoll in der Sprache Go (Golang). Sie ist Teil des Gorilla Toolkit-Ökosystems und bietet Entwicklern ein leistungsstarkes, flexibles und effizientes Werkzeug zur Erstellung von Echtzeitanwendungen: Chats, Echtzeitbenachrichtigungen, Online-Spiele, Dashboards und vieles mehr.



Die Bibliothek implementiert vollständig die Spezifikation RFC 6455, unterstützt sowohl die Server- als auch die Client-Seite und verarbeitet automatisch Nachrichtenfragmentierung, Ping/Pong-Mechanismen und Verbindungskontrolle. Gorilla WebSocket ist in reinem Go ohne externe Abhängigkeiten geschrieben, was es leicht und schnell macht.



Hauptfunktionen

  • Vollständige Unterstützung des WebSocket-Protokolls (RFC 6455).
  • Einfache und intuitive API.
  • Unterstützung für Text- und Binärnachrichten.
  • Automatische Ping/Pong-Verwaltung zur Aufrechterhaltung der Verbindung.
  • Möglichkeit zur Überprüfung des Ursprungs der Anfrage (Origin).
  • Unterstützung für Nachrichtenkomprimierung (permessage-deflate).
  • Arbeit mit TLS/HTTPS.
  • Hohe Leistung und geringer Speicherverbrauch.


Installation

Führen Sie zur Installation der Bibliothek den folgenden Befehl aus:

go get github.com/gorilla/websocket

Importieren Sie anschließend das Paket in Ihren Code:

import "github.com/gorilla/websocket"


Beispiel für einen WebSocket-Server in Go

Nachfolgend sehen Sie einen einfachen Server, der WebSocket-Verbindungen akzeptiert und empfangene Nachrichten zurücksendet (Echo-Server):



package main

import ( "fmt" "log" "net/http"

"github.com/gorilla/websocket")

var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // Alle Ursprünge erlauben (für Entwicklung) },}

func echoHandler(w http.ResponseWriter, r *http.Request) { // WebSocket-Verbindung herstellen conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("Upgrade-Fehler:", err) return } defer conn.Close()

// Endlose Schleife zum Lesen von Nachrichten for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("Lesefehler:", err) break } log.Printf("Nachricht empfangen: %s", message)

// Nachricht zurücksenden err = conn.WriteMessage(messageType, message) if err != nil { log.Println("Schreibfehler:", err) break } }}

func main() { http.HandleFunc("/echo", echoHandler) fmt.Println("Server gestartet auf :8080") log.Fatal(http.ListenAndServe(":8080", nil))}


WebSocket-Client in Go

Beispiel für einen einfachen Client, der eine Verbindung zum Server herstellt und eine Nachricht sendet:



package main

import ( "fmt" "log" "net/url"

"github.com/gorilla/websocket")

func main() { u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/echo"} fmt.Printf("Verbinde zu %s", u.String())

conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal("Verbindungsfehler:", err) } defer conn.Close()

// Textnachricht senden err = conn.WriteMessage(websocket.TextMessage, []byte("Hallo, WebSocket!")) if err != nil { log.Fatal("Sendefehler:", err) }

// Antwort lesen _, message, err := conn.ReadMessage() if err != nil { log.Fatal("Lesefehler:", err) } fmt.Printf("Antwort erhalten: %s", message)}


Arbeit mit mehreren Clients (Broadcast)

Für die Erstellung eines Chats oder eines Benachrichtigungssystems ist es oft erforderlich, Nachrichten

Empfehlungen