Heim > Artikel > Backend-Entwicklung > So erstellen Sie einen WebSocket-Server mit der Go-Sprache
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.
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.
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
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.
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.
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
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!