Maison >développement back-end >Golang >Comment Go WebSocket implémente-t-il la communication bidirectionnelle ?
Le langage Go prend en charge WebSocket, qui peut établir une communication bidirectionnelle via les étapes suivantes : Créer un serveur WebSocket : Créez une fonction de gestionnaire HTTP. Créez une structure Upgrader pour mettre à niveau la requête HTTP. Démarrez le serveur WebSocket. Créer un client WebSocket : créez une requête HTTP et définissez les en-têtes WebSocket. Créez une structure de numérotation. Utilisez la méthode Dial pour établir une connexion.
Go WebSocket : permet une communication bidirectionnelle
WebSocket est un protocole de communication bidirectionnel qui permet l'échange de données en temps réel entre le client et le serveur via une seule connexion TCP persistante. Le langage Go offre aux développeurs une prise en charge intégrée de WebSocket, rendant la communication bidirectionnelle simple et directe.
Création d'un serveur WebSocket
La création d'un serveur WebSocket nécessite trois étapes :
net/http
pour créer la fonction http.Handler
, qui gère la connexion WebSocket. net/http
包创建 http.Handler
函数,该函数处理 WebSocket 连接。websocket.Upgrader
结构体,该结构体将 HTTP 请求升级为 WebSocket 连接。http.ServeHTTP
方法启动 WebSocket 服务端。package main import ( "log" "net/http" "github.com/gorilla/websocket" ) func main() { // HTTP 处理程序 handler := func(w http.ResponseWriter, r *http.Request) { upgrader := websocket.Upgrader{} conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Fatal(err) } defer conn.Close() for { messageType, message, err := conn.ReadMessage() if err != nil { log.Fatal(err) } if messageType == websocket.CloseMessage { log.Println("Client closed connection") return } log.Printf("Received from client: %s", string(message)) err = conn.WriteMessage(messageType, []byte("Echoed: "+string(message))) if err != nil { log.Fatal(err) } } } // 启动 WebSocket 服务端 http.HandleFunc("/websocket", handler) err := http.ListenAndServe(":8080", nil) if err != nil { log.Fatal(err) } }
创建 WebSocket 客户端
创建 WebSocket 客户端同样需要三步:
net/http
包创建 http.Request
,并设置 "Upgrade: WebSocket"
头。websocket.Dialer
结构体,该结构体用于建立 WebSocket 连接。Dial
websocket.Upgrader
, qui met à niveau les requêtes HTTP vers les connexions WebSocket. Utilisez la méthode http.ServeHTTP
pour démarrer le serveur WebSocket.
package main import ( "fmt" "log" "github.com/gorilla/websocket" ) func main() { dialers := websocket.Dialer{ ReadBufferSize: 1024, WriteBufferSize: 1024, } conn, _, err := dialers.Dial("ws://localhost:8080/websocket", nil) if err != nil { log.Fatal(err) } defer conn.Close() for i := 0; i < 10; i++ { message := fmt.Sprintf("Hello from client %d", i) err := conn.WriteMessage(websocket.TextMessage, []byte(message)) if err != nil { log.Fatal(err) } _, message, err = conn.ReadMessage() if err != nil { log.Fatal(err) } log.Printf("Received echo: %s", string(message)) } }🎜🎜Création d'un client WebSocket🎜🎜🎜La création d'un client WebSocket nécessite également trois étapes : 🎜🎜🎜Utilisez le package
net/http
pour créer http.Request
et définissez-le en-tête "Mise à niveau : WebSocket"
. 🎜🎜Créez la structure websocket.Dialer
, qui permet d'établir une connexion WebSocket. 🎜🎜Utilisez la méthode Dial
pour établir une connexion. 🎜🎜rrreee🎜Avec ces étapes, vous pouvez facilement implémenter la communication bidirectionnelle WebSocket dans Go, en ajoutant des capacités d'interaction en temps réel à vos applications. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!