Gorilla WebSocket-Bibliothek 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: Leistungsstarkes Tool für Echtzeitkommunikation mit Go



In der modernen Webentwicklung wird der Bedarf an Echtzeit-Datenaustausch immer wichtiger. Ob Chats, Online-Spiele, Serverüberwachung oder Börsenkurse – WebSocket ist der De-facto-Standard für die bidirektionale Kommunikation zwischen Client und Server. Für die Sprache Go (Golang) ist Gorilla WebSocket eine der beliebtesten und stabilsten Bibliotheken für die Arbeit mit WebSocket.



Die Bibliothek gorilla/websocket ist Teil des Gorilla Toolkit-Ökosystems – einer Sammlung hochwertiger Pakete für die Webentwicklung mit Go. Sie bietet einen vollständigen Funktionsumfang zum Erstellen von WebSocket-Servern und -Clients, unterstützt alle wichtigen Protokolle (RFC 6455) und zeichnet sich durch einfache Bedienung aus.



Hauptfunktionen von Gorilla WebSocket



  • Vollständige WebSocket-Protokollunterstützung – Arbeit mit Text- und Binärframes, Nachrichtenfragmentierung, Kontrollframes (ping/pong).
  • Bequeme API – Minimalistische Schnittstelle mit den Funktionen ReadMessage und WriteMessage.
  • TLS/SSL-Unterstützung – Gesicherte WebSocket-Verbindungen (wss://).
  • Flexible Konfiguration – Möglichkeit, Timeouts, Puffergrößen festzulegen und die Herkunft von Anfragen zu überprüfen.
  • HTTP-Kompatibilität – Einfach in jeden Go-HTTP-Server (net/http) integrierbar.
  • Arbeit mit Kontexten – Unterstützung von context.Context zum Abbrechen von Operationen.


Installation der Bibliothek



Führen Sie zur Installation von Gorilla WebSocket den folgenden Befehl im Terminal aus:



go get github.com/gorilla/websocket


Fügen Sie anschließend den Import in Ihre Go-Datei ein:



import "github.com/gorilla/websocket"


Basisbeispiel eines WebSocket-Servers



Betrachten wir einen einfachen Echo-Server, der WebSocket-Verbindungen annimmt und empfangene Nachrichten zurücksendet.



package main

import ( "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) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("Upgrade fehlgeschlagen:", err) return } defer conn.Close()

for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("Lesefehler:", err) break } log.Printf("Empfangen: %s", message)

if err := conn.WriteMessage(messageType, message); err != nil { log.Println("Schreibfehler:", err) break } }}

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


Ausführliche Erklärung des Codes



  1. Upgrader – Eine Struktur, die eine normale HTTP-Anfrage in eine WebSocket-Verbindung umwandelt. Im Beispiel erlauben wir Anfragen von allen Ursprüngen (Feld CheckOrigin). In der Produktion sollten Sie bestimmte Domains überprüfen.
  2. Upgrade – Die Hauptmethode, die http.ResponseWriter und *http.Request entgegennimmt und *websocket.Conn zurückgibt.
  3. ReadMessage – Ein blockierender Aufruf, der auf eine neue Nachricht vom Client wartet. Gibt den Nachrichtentyp (Text oder Binärdaten) und die Daten selbst zurück.
  4. WriteMessage – Sendet eine Nachricht zurück an den Client. In diesem Fall geben wir einfach das Gleiche zurück, das wir empfangen haben.


WebSocket-Client (Gorilla)



Die Bibliothek ermöglicht auch

Empfehlungen