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.
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/http
和github.com/gorilla/websocket
这两个依赖包。net/http
用于创建HTTP服务器,gorilla/websocket
用于处理WebSocket连接。import ( "net/http" "github.com/gorilla/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连接 }
在wsHandler()
函数中,我们创建了一个Upgrader
对象,并设置了CheckOrigin
属性为一个匿名函数,返回true表示接受所有的跨域请求。
接下来,我们使用Upgrade()
函数将HTTP协议升级为WebSocket协议,如果升级失败则打印错误信息并返回。如果升级成功,我们可以使用conn
对象来处理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 } }
在上面的示例中,我们使用ReadMessage()
函数读取客户端发送的消息,并使用WriteMessage()
函数将消息回传给客户端。如果读取或写入过程中出现错误,我们打印错误信息并跳出循环。
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) } }
在上面的示例中,我们将wsHandler()
http.HandleFunc()
, um WebSocket-Verbindungsanfragen zu verarbeiten, und verwenden websocket.Upgrade()Funktion aktualisiert das HTTP-Protokoll auf das WebSocket-Protokoll. <br>
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.
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. 🎜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!