Maison >développement back-end >Golang >Apprenez les fonctions de programmation réseau en langage Go et implémentez la communication WebSocket
Apprenez les fonctions de programmation réseau en langage Go et implémentez la communication WebSocket
Introduction
Le langage Go, en tant que langage de programmation puissant, est largement utilisé dans le domaine de la programmation réseau. Il fournit une multitude de fonctions et de bibliothèques de programmation réseau, permettant aux développeurs de mettre en œuvre facilement diverses fonctions de communication réseau. Cet article présentera certaines fonctions de programmation réseau couramment utilisées dans le langage Go et combinera des exemples pour implémenter la communication WebSocket.
1. Fonction de programmation réseau
net.Listen
Signature de fonction : func Listen (réseau, chaîne d'adresse) (Listener, erreur)
Objectif : écouter l'adresse réseau spécifiée et renvoyer un objet Listener
Exemple :
listener, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { log.Fatal(err) } defer listener.Close()
Accepter
Signature de fonction : func (l *TCPListener) Accept() (Conn, erreur)
Objectif : Accepter la demande de connexion et renvoyer un objet Conn
Exemple :
conn, err := listener.Accept() if err != nil { log.Fatal(err) } defer conn.Close()
gorilla/websocket
pour implémenter facilement les fonctions de communication WebSocket. gorilla/websocket
库来方便地实现WebSocket通信功能。二、实现WebSocket通信
安装gorilla/websocket
gorilla/websocket
go get -u github.com/gorilla/websocket
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func websocketHandler(w http.ResponseWriter, r *http.Request) { 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.Println(err) break } log.Printf("Received message: %s ", message) if err := conn.WriteMessage(messageType, message); err != nil { log.Println(err) break } } } func main() { http.HandleFunc("/websocket", websocketHandler) log.Fatal(http.ListenAndServe(":8080", nil)) }
Client -side code
package main import ( "log" "net/url" "github.com/gorilla/websocket" ) func main() { u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/websocket"} conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal(err) } defer conn.Close() for i := 0; i < 5; i++ { message := []byte("Hello from client") if err := conn.WriteMessage(websocket.TextMessage, message); err != nil { log.Fatal(err) } _, receivedMessage, err := conn.ReadMessage() if err != nil { log.Fatal(err) } log.Printf("Received message from server: %s", receivedMessage) } }🎜🎜Exécutez les deux fichiers de code ci-dessus pour réaliser la communication entre le client et le serveur basée sur le protocole WebSocket. Le client enverra un message au serveur, recevra le message du serveur et répétera 5 fois. 🎜🎜Résumé🎜Cet article présente certaines fonctions de programmation réseau couramment utilisées en langage Go et implémente la communication WebSocket avec des exemples. En apprenant ces connaissances, nous pouvons mieux les comprendre et les appliquer à la programmation réseau réelle. Que nous développions des applications Web ou d'autres scénarios de communication réseau, la maîtrise de ces fonctions de programmation réseau améliorera considérablement notre efficacité de développement. Nous espérons que les lecteurs pourront mieux comprendre les fonctionnalités de programmation réseau du langage Go grâce à l'apprentissage, afin qu'elles puissent être appliquées de manière flexible dans des projets réels. 🎜
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!