Heim >Backend-Entwicklung >Golang >Wie verwende ich Go und http.Transport für die WebSocket-Kommunikation?

Wie verwende ich Go und http.Transport für die WebSocket-Kommunikation?

王林
王林Original
2023-07-21 18:49:14847Durchsuche

Wie verwende ich Go und http.Transport für die WebSocket-Kommunikation?

WebSocket ist ein Protokoll, das eine bidirektionale Kommunikation in Netzwerkanwendungen ermöglicht. Es ermöglicht dem Server, Nachrichten aktiv an den Client zu senden, ohne dass der Client zuerst eine Anfrage initiieren muss. In der Go-Sprache können Sie http.Transport verwenden, um WebSocket-Verbindungen zu erstellen und zu verwalten.

Hier ist ein Beispielcode für die WebSocket-Kommunikation mit Go und http.Transport:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func EchoServer(ws *websocket.Conn) {
    for {
        var message string
        err := websocket.Message.Receive(ws, &message)
        if err != nil {
            log.Println("receive failed:", err)
            break
        }
        log.Println("received:", message)

        err = websocket.Message.Send(ws, message)
        if err != nil {
            log.Println("send failed:", err)
            break
        }
        log.Println("sent:", message)
    }
}

func main() {
    http.Handle("/", websocket.Handler(EchoServer))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

Der obige Code erstellt einen WebSocket-Server, der empfangene Nachrichten unverändert an den Client zurücksendet. In der Hauptfunktion verwenden wir http.Handle und websocket.Handler, um die EchoServer-Funktion als Prozessor zu registrieren. Verwenden Sie dann http.ListenAndServe, um den Server zu starten, der Port 8080 überwacht.

Auf der Clientseite können wir http.Transport verwenden, um eine WebSocket-Verbindung herzustellen und Daten über die Methoden „Senden“ und „Empfangen“ zu senden und zu empfangen. Das Folgende ist ein einfacher Client-Beispielcode:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func main() {
    origin := "http://localhost/"
    url := "ws://localhost:8080/"
    ws, err := websocket.Dial(url, "", origin)
    if err != nil {
        log.Fatal("dial failed:", err)
    }

    message := "Hello, WebSocket!"
    err = websocket.Message.Send(ws, message)
    if err != nil {
        log.Fatal("send failed:", err)
    }

    var response string
    err = websocket.Message.Receive(ws, &response)
    if err != nil {
        log.Fatal("receive failed:", err)
    }

    fmt.Println("received:", response)
}

Im obigen Code verwenden wir websocket.Dial, um eine WebSocket-Verbindung zu erstellen. Verwenden Sie dann die Methode websocket.Message.Send, um die Nachricht zu senden, und verwenden Sie websocket.Message.Receive, um die vom Server zurückgegebene Nachricht zu empfangen.

Mit dem obigen Codebeispiel können wir ganz einfach WebSocket-Verbindungen mit Go und http.Transport erstellen und verwalten. WebSocket bietet effiziente und bidirektionale Echtzeit-Kommunikationsfunktionen für Anwendungen und eignet sich für viele verschiedene Anwendungsszenarien. Ich hoffe, dieser Artikel ist hilfreich für Sie!

Das obige ist der detaillierte Inhalt vonWie verwende ich Go und http.Transport für die WebSocket-Kommunikation?. 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