So verwenden Sie WebSocket zur Fernsteuerung in Golang

WBOY
Freigeben: 2023-12-17 20:06:56
Original
1207 Leute haben es durchsucht

So verwenden Sie WebSocket zur Fernsteuerung in Golang

So verwenden Sie WebSocket für die Fernsteuerung in der Go-Sprache

Einführung:

WebSocket ist eine Technologie, die eine bidirektionale Kommunikation in Echtzeit in Webanwendungen ermöglicht. In der Go-Sprache können wir die Pakete net/http und github.com/gorilla/websocket in der Standardbibliothek verwenden, um die WebSocket-Kommunikation zu implementieren. In diesem Artikel wird die Verwendung von WebSocket für die Fernsteuerung in der Go-Sprache vorgestellt und spezifische Codebeispiele bereitgestellt. net/httpgithub.com/gorilla/websocket包来实现WebSocket通信。本文将介绍如何使用WebSocket在Go语言中进行远程控制,并提供具体的代码示例。

步骤:

  1. 引入依赖包
go get github.com/gorilla/websocket
Nach dem Login kopieren
  1. 创建WebSocket服务器
package main

import (
    "log"
    "net/http"

    "github.com/gorilla/websocket"
)

var upgrader = websocket.Upgrader{}

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

    for {
        // 读取客户端消息
        messageType, p, err := conn.ReadMessage()
        if err != nil {
            log.Println(err)
            return
        }

        // 处理客户端消息
        // doSomething(p)

        // 响应客户端消息
        err = conn.WriteMessage(messageType, p)
        if err != nil {
            log.Println(err)
            return
        }
    }
}

func main() {
    http.HandleFunc("/ws", wsHandler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
Nach dem Login kopieren
  1. 创建WebSocket客户端
package main

import (
    "log"
    "net/url"
    "os"
    "os/signal"
    "time"

    "github.com/gorilla/websocket"
)

func main() {
    interrupt := make(chan os.Signal, 1)
    signal.Notify(interrupt, os.Interrupt)

    u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/ws"}
    log.Printf("connecting to %s", u.String())

    c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    if err != nil {
        log.Fatal("dial:", err)
    }
    defer c.Close()

    done := make(chan struct{})

    // 启动读取协程
    go func() {
        defer c.Close()
        defer close(done)
        for {
            _, message, err := c.ReadMessage()
            if err != nil {
                log.Println("read:", err)
                return
            }
            // 处理服务器消息
            // doSomething(message)
        }
    }()

    // 启动写入协程
    go func() {
        defer c.Close()
        defer close(done)
        for {
            // 写入消息到服务器
            err := c.WriteMessage(websocket.TextMessage, []byte("Hello, Server!"))
            if err != nil {
                log.Println("write:", err)
                return
            }
            time.Sleep(time.Second)
        }
    }()

    // 等待中断信号,优雅地关闭连接
    for {
        select {
        case <-done:
            return
        case <-interrupt:
            log.Println("interrupt")
            return
        }
    }
}
Nach dem Login kopieren
  1. 编译和运行
$ go build server.go
$ go build client.go
$ ./server
$ ./client
Nach dem Login kopieren

总结:

通过上述步骤,我们可以在Go语言中使用WebSocket进行远程控制。在服务器端,我们使用github.com/gorilla/websocket包来创建和管理WebSocket连接,并通过conn.ReadMessage()conn.WriteMessage()方法读取和发送消息。在客户端,我们可以通过websocket.DefaultDialer.Dial()来进行WebSocket的连接,在读取和发送消息时使用ReadMessage()WriteMessage()

Schritte: 🎜
  1. Abhängigkeitspakete einführen
rrreee
  1. WebSocket-Server erstellen
rrreee
  1. WebSocket-Client erstellen
rrreee
  1. Kompilieren und ausführen
rrreee🎜Zusammenfassung:🎜🎜Durch die oben genannten Schritte Schritte: Wir können WebSocket für die Fernsteuerung in der Go-Sprache verwenden. Auf der Serverseite verwenden wir das Paket github.com/gorilla/websocket, um WebSocket-Verbindungen zu erstellen und zu verwalten, und übergeben conn.ReadMessage() und conn. WriteMessage( )-Methode zum Lesen und Senden von Nachrichten. Auf der Clientseite können wir über websocket.DefaultDialer.Dial() eine Verbindung zu WebSocket herstellen und beim Lesen und Senden von Nachrichten ReadMessage() und WriteMessage verwenden. )Methode. Auf diese Weise können wir flexibel aus der Ferne steuern und eine Echtzeitkommunikation erreichen. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie WebSocket zur Fernsteuerung in Golang. 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