Maison > développement back-end > Golang > le corps du texte

Apprenez les fonctions de programmation réseau en langage Go et implémentez la communication WebSocket

WBOY
Libérer: 2023-07-29 17:37:22
original
1408 Les gens l'ont consulté

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

  1. 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()
    Copier après la connexion
  2. 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()
    Copier après la connexion
  3. Protocole WebSocket
    WebSocket est une méthode qui utilise une seule connexion TCP Protocole de communication full-duplex qui permet une communication en temps réel entre les clients et les serveurs. Le langage Go fournit la bibliothèque gorilla/websocket pour implémenter facilement les fonctions de communication WebSocket. gorilla/websocket库来方便地实现WebSocket通信功能。

二、实现WebSocket通信

  1. 安装gorilla/websocket

    2. Implémenter la communication WebSocket
  2. Installer la bibliothèque gorilla/websocket
  3. Exécuter la commande suivante dans la ligne de commande :
  4. go get -u github.com/gorilla/websocket
    Copier après la connexion

  5. Code côté serveur
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))
}
Copier après la connexion

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)
 }
}
Copier après la connexion
🎜🎜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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal