Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie einen WebSocket-Server mit der Go-Sprache

So erstellen Sie einen WebSocket-Server mit der Go-Sprache

WBOY
WBOYOriginal
2023-06-04 08:40:461701Durchsuche

WebSockets ist ein fortschrittliches Netzwerkprotokoll, das eine bidirektionale Kommunikation zwischen Client und Server über eine einzige TCP-Verbindung ermöglicht. WebSockets unterstützen Echtzeit-Datenübertragung, Online-Spiele, Chatrooms und andere Anwendungen und sind daher bei Entwicklern sehr beliebt.

Go-Sprache ist eine leistungsstarke, prägnante Programmiersprache, die sich zum Erstellen von WebSockets-Servern eignet. In diesem Artikel wird detailliert beschrieben, wie Sie einen WebSocket-Server mithilfe der Go-Sprache erstellen.

  1. Verstehen Sie das WebSocket-Protokoll

Das WebSocket-Protokoll verwendet den Handshake und den Upgrade-Header des HTTP-Protokolls, um ein Upgrade auf eine WebSocket-Verbindung durchzuführen. WebSocket-Verbindungen verwenden immer Wagenrücklauf- und Zeilenvorschubzeichen als Nachrichtenabschlusszeichen. WebSocket-Nachrichten können Text- oder Binärdaten sein.

  1. Installieren Sie die Gorilla WebSocket-Bibliothek

Die Gorilla WebSocket-Bibliothek ist eine der beliebtesten WebSocket-Bibliotheken in der Go-Sprache. Sie bietet Implementierungen von WebSocket-Clients und -Servern. Sie können die Gorilla WebSocket-Bibliothek mit dem folgenden Befehl installieren:

go get github.com/gorilla/websocket
  1. Erstellen Sie einen WebSocket-Server

Hier ist ein einfaches Beispiel für einen WebSocket-Server:

package main

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

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
}

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

func echoHandler(w http.ResponseWriter, r *http.Request) {
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }
    defer conn.Close()

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

Im obigen Code verarbeitet die echoHandler-Funktion alle WebSocket-Verbindungen. Es verwendet den von der Gorilla WebSocket-Bibliothek bereitgestellten Upgrader, um HTTP-Anfragen auf WebSocket-Verbindungen zu aktualisieren. Nachdem die Verbindung aktualisiert wurde, liest der Server die Nachricht vom Client mit conn.ReadMessage() und gibt die Nachricht mit conn.WriteMessage() an den Client zurück.

  1. Ausführen des WebSocket-Servers

Führen Sie nun den WebSocket-Server aus. Gehen Sie im Terminal in das Verzeichnis, in dem sich die Go-Dateien befinden, und führen Sie den folgenden Befehl aus:

go run main.go

An diesem Punkt sollten Sie eine Ausgabe ähnlich der folgenden sehen:

2021/08/11 15:32:31 Listening on port 8080...

Dies bedeutet, dass Ihr Server Port 8080 All überwacht eingehende Verbindungen.

  1. Testen des WebSocket-Servers

Nachdem Sie nun den WebSocket-Server erfolgreich erstellt haben, können Sie ihn mit dem WebSocket-Client testen. Es wird empfohlen, zum Testen den Chrome-Browser zu verwenden, da der Chrome-Browser über einen integrierten WebSocket-Client verfügt. Öffnen Sie die Entwicklertools in Chrome, wechseln Sie zum Konsolen-Tab und geben Sie den folgenden Code ein:

var ws = new WebSocket("ws://localhost:8080/echo");
ws.onopen = function() {
    console.log("Connected");
    ws.send("Hello, World!");
};
ws.onmessage = function(event) {
    console.log("Received message: " + event.data);
};
ws.onclose = function() {
    console.log("Disconnected");
};

Chrome stellt eine WebSocket-Verbindung zu Ihrem Server her und sendet eine „Hello, World!“-Nachricht. Ihr Server gibt die Nachricht zurück und sendet sie an den Client zurück. In Ihrer Konsole sollte eine Ausgabe ähnlich der folgenden angezeigt werden:

Connected
Received message: Hello, World!
Disconnected
  1. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie einen WebSocket-Server mithilfe der Gorilla WebSocket-Bibliothek und der Go-Sprache erstellen. Jetzt wissen Sie, wie Sie das WebSocket-Protokoll verwenden, um Echtzeit-Kommunikationsfunktionen zu implementieren. Mit WebSocket können Sie eine einzelne TCP-Verbindung zum Übertragen von Daten verwenden, ohne für jede Anfrage eine neue Verbindung herstellen zu müssen. Dadurch werden Leistung und Skalierbarkeit verbessert, sodass sich der Einsatz in Anwendungen lohnt.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen WebSocket-Server mit der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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