Heim > Backend-Entwicklung > Golang > Erstellen eines WebSocket -Servers in Go With Gorilla

Erstellen eines WebSocket -Servers in Go With Gorilla

Mary-Kate Olsen
Freigeben: 2025-01-27 04:02:08
Original
403 Leute haben es durchsucht

Creating a WebSocket Server in Go with Gorilla

Aufbau eines Echtzeit-Go-WebSocket-Servers mit Gorilla

WebSockets bieten eine robuste Lösung für die bidirektionale Echtzeitkommunikation zwischen Clients und Servern. Dieses Tutorial führt Sie durch die Erstellung eines WebSocket-Servers in Go und nutzt dabei die beliebte Gorilla WebSocket-Bibliothek.


Inhaltsverzeichnis

  1. WebSockets und Gorilla verstehen
  2. Projekt-Setup
  3. Verzeichnisstruktur
  4. Gorilla WebSocket installieren
  5. Aufbau des WebSocket-Servers
  6. Nachrichtenverarbeitung
  7. Ausführen der Anwendung
  8. Fazit
  9. GitHub Repository (Link-Platzhalter)

WebSockets und Gorilla verstehen

WebSockets bieten im Gegensatz zum Request-Response-Modell von HTTP dauerhafte Vollduplex-Kommunikationskanäle. Diese ständige Verbindung ermöglicht einen effizienten, kontinuierlichen Datenaustausch.

Die Gorilla WebSocket-Bibliothek vereinfacht die WebSocket-Implementierung in Go und verwaltet den Handshake, die Nachrichten-E/A und den Verbindungslebenszyklus.


Projekt-Setup

Dieses Tutorial erstellt einen einfachen WebSocket-Server und -Client:

  1. Ein WebSocket-Server, der Verbindungen akzeptiert.
  2. Ein Client, der mit dem Server interagiert.

Verzeichnisstruktur

Organisieren Sie Ihr Projekt wie folgt:

<code>websocket-server/
├── main.go           # Application entry point
├── handlers/         # WebSocket handler functions
│   └── websocket.go  # Handles WebSocket connections and messages
├── static/           # Client-side HTML/JS files
│   └── index.html    # Simple client interface
└── go.mod            # Go module file</code>
Nach dem Login kopieren

Gorilla WebSocket installieren

Installieren Sie das Gorilla WebSocket-Paket:

<code class="language-bash">go get -u github.com/gorilla/websocket</code>
Nach dem Login kopieren

Aufbau des WebSocket-Servers

Schritt 1: main.go

Erstellen main.go:

<code class="language-go">package main

import (
    "fmt"
    "log"
    "net/http"
    "websocket-server/handlers"
)

func main() {
    http.HandleFunc("/ws", handlers.HandleWebSocket)
    http.Handle("/", http.FileServer(http.Dir("./static")))
    port := ":8080"
    fmt.Printf("Server running on http://localhost%s\n", port)
    log.Fatal(http.ListenAndServe(port, nil))
}</code>
Nach dem Login kopieren

Dadurch wird ein HTTP-Server eingerichtet, statische Dateien bereitgestellt und WebSocket-Verbindungen verwaltet unter /ws.

Schritt 2: WebSocket-Handler (websocket.go)

Erstellen Sie im Verzeichnis handlers websocket.go:

<code class="language-go">package handlers

import (
    "fmt"
    "net/http"

    "github.com/gorilla/websocket"
)

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

func HandleWebSocket(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        fmt.Println("Upgrade failed:", err)
        return
    }
    defer conn.Close()
    fmt.Println("Client connected")
    for {
        _, msg, err := conn.ReadMessage()
        if err != nil {
            fmt.Println("Read failed:", err)
            break
        }
        fmt.Printf("Received: %s\n", msg)
        if err := conn.WriteMessage(websocket.TextMessage, msg); err != nil {
            fmt.Println("Write failed:", err)
            break
        }
    }
}</code>
Nach dem Login kopieren

Dieser Handler aktualisiert die HTTP-Verbindung, liest Nachrichten und gibt sie zurück.


Nachrichtenverarbeitung

HandleWebSocket verarbeitet eingehende Nachrichten. Sie können dies erweitern, um Funktionen wie Broadcasting oder Nachrichtenpersistenz zu implementieren.


Ausführen der Anwendung

Schritt 1: Einfacher Client (index.html)

Erstellen Sie index.html im Verzeichnis static: (Dieser Abschnitt erfordert eine clientseitige JavaScript-Implementierung, um eine Verbindung zum Websocket herzustellen. Ein einfaches Beispiel wird der Kürze halber weggelassen, aber viele Beispiele sind online leicht verfügbar.)

Schritt 2: Führen Sie den Server aus

Ausführen go run main.go. Öffnen Sie dann http://localhost:8080 in Ihrem Browser (mit dem entsprechenden clientseitigen JavaScript).


Schlussfolgerung

Dieses Tutorial zeigt einen grundlegenden GO WebSocket -Server mit Gorilla. Websockets eignen sich ideal für Echtzeitanwendungen. Erweitern Sie diese Grundlage mit Authentifizierung, Rundfunk und Datenspeicher nach Bedarf.


Github Repository

[Github Repository Link hier einfügen]

Das obige ist der detaillierte Inhalt vonErstellen eines WebSocket -Servers in Go With Gorilla. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage