Golang WebSocket-Tutorial: So erreichen Sie Echtzeitkommunikation

王林
Freigeben: 2023-12-17 13:54:36
Original
1302 Leute haben es durchsucht

golang WebSocket教程:如何实现实时通信

Golang WebSocket-Tutorial: So erreichen Sie Echtzeitkommunikation

Lassen Sie uns zunächst vorstellen, was WebSocket ist. WebSocket ist ein Protokoll für die Vollduplex-Kommunikation zwischen einem Webbrowser und einem Server. Im Gegensatz zum HTTP-Protokoll ermöglicht WebSocket dem Server, Daten an den Client zu übertragen und Echtzeitkommunikation sowie ereignisgesteuerte und andere Funktionen zu implementieren.

In diesem Tutorial verwenden wir Golang, um einen einfachen WebSocket-Server zu implementieren. Wir zeigen Ihnen, wie Sie eine WebSocket-Verbindung herstellen, Nachrichten senden und empfangen und veranschaulichen dies anhand konkreter Codebeispiele.

Zuerst müssen wir das WebSocket-Paket von Golang importieren:

import (
    "log"
    "net/http"
    "github.com/gorilla/websocket"
)
Nach dem Login kopieren

Dann müssen wir einen WebSocket-Upgrader (Upgrader) zum Upgrade des HTTP-Protokolls auf das WebSocket-Protokoll definieren:

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
    CheckOrigin: func(r *http.Request) bool { return true },
}
Nach dem Login kopieren

Als nächstes müssen wir einen WebSocket-Handler Connect definieren Funktion. Diese Funktion wird als HTTP-Handler registriert und jedes Mal aufgerufen, wenn eine WebSocket-Verbindungsanforderung vorliegt:

func handleWebSocket(w http.ResponseWriter, r *http.Request) {
    // 将HTTP连接升级为WebSocket连接
    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return
    }
    // 在新的goroutine中处理WebSocket连接
    go handleWebSocketConnection(conn)
}
Nach dem Login kopieren

In der Funktion, die die WebSocket-Verbindung verarbeitet, müssen wir eine Schleife definieren, um das Empfangen und Senden von Nachrichten zu verarbeiten:

func handleWebSocketConnection(conn *websocket.Conn) {
    for {
        // 读取客户端发送的消息
        _, msg, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            return
        }
        // 打印接收到的消息
        log.Println("Received message:", string(msg))
        
        // 发送消息给客户端
        err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, client!"))
        if err != nil {
            log.Println(err)
            return
        }
    }
}
Nach dem Login kopieren

Jetzt müssen wir nur noch die obige Funktion als HTTP-Handler registrieren und einen HTTP-Server starten:

func main() {
    // 注册WebSocket处理器
    http.HandleFunc("/ws", handleWebSocket)
    // 启动HTTP服务器
    log.Println("WebSocket server started on localhost:8080")
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal(err)
    }
}
Nach dem Login kopieren

An diesem Punkt haben wir einen einfachen WebSocket-Server fertiggestellt. Wenn ein Client über WebSocket eine Verbindung zum Server herstellt, empfängt der Server die vom Client gesendete Nachricht und antwortet mit einer festen Nachricht.

Um den Server zu testen, können wir ein Browser-Plugin wie „Simple WebSocket Client“ verwenden, die Serveradresse ws://localhost:8080/ws eingeben und eine Verbindung herstellen. Geben Sie die Nachricht in das Nachrichtenfeld des Plug-ins ein und senden Sie sie. Wir können die empfangene Nachricht im Terminal sehen und gleichzeitig eine Nachricht an den Client senden.

Das Obige ist unser grundlegendes Tutorial zur Verwendung von Golang zur Implementierung von WebSocket. WebSocket verfügt über ein großes Potenzial für Echtzeitkommunikation, ereignisgesteuert usw. und kann in Chat-Anwendungen, Echtzeit-Datenvisualisierung und anderen Szenarien verwendet werden. Ich hoffe, dass dieses Tutorial Ihnen dabei helfen kann, WebSocket zu verstehen und zu verwenden.

Das obige ist der detaillierte Inhalt vonGolang WebSocket-Tutorial: So erreichen Sie Echtzeitkommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage