So erstellen Sie einen WebSocket-Server mit Golang

WBOY
Freigeben: 2023-12-17 22:32:22
Original
948 Leute haben es durchsucht

So erstellen Sie einen WebSocket-Server mit Golang

So erstellen Sie einen WebSocket-Server mit Golang

WebSocket ist ein Protokoll, das eine bidirektionale Kommunikation zwischen einem Client und einem Server ermöglicht. Es ermöglicht uns, Daten zwischen Client und Server über eine dauerhafte Verbindung zu übertragen. In diesem Artikel werde ich Ihnen vorstellen, wie Sie mit Golang einen einfachen WebSocket-Server erstellen, und spezifische Codebeispiele bereitstellen.

  1. Vorbereitung
    Bevor Sie beginnen, müssen Sie sicherstellen, dass Sie Golang richtig installiert haben. Sie können das Installationspaket von der offiziellen Website herunterladen und den Anweisungen zur Installation folgen.
  2. Abhängigkeiten importieren
    Wir müssen die beiden Abhängigkeitspakete net/http und github.com/gorilla/websocket importieren. net/http wird verwendet, um einen HTTP-Server zu erstellen, und gorilla/websocket wird verwendet, um WebSocket-Verbindungen zu verwalten. net/httpgithub.com/gorilla/websocket这两个依赖包。net/http用于创建HTTP服务器,gorilla/websocket用于处理WebSocket连接。
import (
    "net/http"
    "github.com/gorilla/websocket"
)
Nach dem Login kopieren
  1. 创建WebSocket服务器
    我们使用http.HandleFunc()函数来处理WebSocket连接请求,并使用websocket.Upgrade()函数将HTTP协议升级为WebSocket协议。
func wsHandler(w http.ResponseWriter, r *http.Request) {
    upgrader := websocket.Upgrader{
        CheckOrigin: func(r *http.Request) bool { return true },
    }

    conn, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println("Upgrade error:", err)
        return
    }

    // 在这里处理WebSocket连接
}
Nach dem Login kopieren

wsHandler()函数中,我们创建了一个Upgrader对象,并设置了CheckOrigin属性为一个匿名函数,返回true表示接受所有的跨域请求。

接下来,我们使用Upgrade()函数将HTTP协议升级为WebSocket协议,如果升级失败则打印错误信息并返回。如果升级成功,我们可以使用conn对象来处理WebSocket连接。

  1. 处理WebSocket连接
    在WebSocket连接建立后,我们可以使用conn对象进行读写操作。下面是一个简单的处理示例:
for {
    messageType, message, err := conn.ReadMessage()
    if err != nil {
        log.Println("Read error:", err)
        break
    }

    log.Println("received message:", string(message))

    err = conn.WriteMessage(messageType, message)
    if err != nil {
        log.Println("Write error:", err)
        break
    }
}
Nach dem Login kopieren

在上面的示例中,我们使用ReadMessage()函数读取客户端发送的消息,并使用WriteMessage()函数将消息回传给客户端。如果读取或写入过程中出现错误,我们打印错误信息并跳出循环。

  1. 启动WebSocket服务器
    最后,我们使用http.HandleFunc()函数将wsHandler()函数注册为处理WebSocket连接的处理器,并使用http.ListenAndServe()函数在指定端口上启动WebSocket服务器。
func main() {
    http.HandleFunc("/ws", wsHandler)
    log.Println("WebSocket server started.")

    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe error:", err)
    }
}
Nach dem Login kopieren

在上面的示例中,我们将wsHandler()

rrreee
      Erstellen Sie einen WebSocket-Server
    1. Wir verwenden die Funktion http.HandleFunc(), um WebSocket-Verbindungsanfragen zu verarbeiten, und verwenden websocket.Upgrade()Funktion aktualisiert das HTTP-Protokoll auf das WebSocket-Protokoll. <br>
    2. rrreee
    In der Funktion wsHandler() haben wir ein Upgrader-Objekt erstellt und das Attribut CheckOrigin auf eine anonyme Funktion gesetzt, die wahre Mittelwerte zurückgibt Akzeptieren aller domänenübergreifenden Anfragen.


    Als nächstes verwenden wir die Funktion Upgrade(), um das HTTP-Protokoll auf das WebSocket-Protokoll zu aktualisieren. Wenn das Upgrade fehlschlägt, wird eine Fehlermeldung gedruckt und zurückgegeben. Wenn das Upgrade erfolgreich ist, können wir das conn-Objekt verwenden, um die WebSocket-Verbindung zu verwalten.

      🎜Umgang mit WebSocket-Verbindungen🎜Nachdem die WebSocket-Verbindung hergestellt wurde, können wir das conn-Objekt für Lese- und Schreibvorgänge verwenden. Hier ist ein einfaches Verarbeitungsbeispiel: 🎜🎜rrreee🎜Im obigen Beispiel verwenden wir die Funktion ReadMessage(), um die vom Client gesendete Nachricht zu lesen, und verwenden WriteMessage()Die Funktion sendet die Nachricht zurück an den Client. Tritt beim Lesen oder Schreiben ein Fehler auf, geben wir die Fehlermeldung aus und brechen aus der Schleife aus. 🎜
        🎜Starten Sie den WebSocket-Server🎜Abschließend verwenden wir die Funktion http.HandleFunc(), um die Funktion wsHandler() als verarbeitenden WebSocket zu registrieren Verbindungsserver und verwenden Sie die Funktion http.ListenAndServe(), um den WebSocket-Server am angegebenen Port zu starten. 🎜🎜rrreee🎜Im obigen Beispiel haben wir die Funktion wsHandler() als Handler für den Pfad „/ws“ registriert. Sie können den Pfad nach Bedarf anpassen. 🎜🎜🎜Client-Tests🎜Da wir nun die Erstellung eines WebSocket-Servers abgeschlossen haben, können wir mit ihm über jeden Client kommunizieren, der das WebSocket-Protokoll unterstützt. Sie können dies mit den Entwicklertools Ihres Browsers testen oder einige WebSocket-Testtools verwenden. 🎜🎜🎜Zusammenfassung🎜Dieser Artikel stellt vor, wie man mit Golang einen einfachen WebSocket-Server erstellt, und stellt spezifische Codebeispiele bereit. Es ist sehr einfach, mit Golang einen WebSocket-Server zu erstellen, und es kann problemlos eine bidirektionale Kommunikation erreicht werden. Ich hoffe, dass dieser Artikel Ihnen hilft, WebSocket zu verstehen und zu verwenden. 🎜

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen WebSocket-Server mit 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