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

Comment créer un serveur WebSocket à l'aide de Golang

WBOY
Libérer: 2023-12-17 22:32:22
original
957 Les gens l'ont consulté

Comment créer un serveur WebSocket à laide de Golang

Comment créer un serveur WebSocket à l'aide de golang

WebSocket est un protocole qui permet une communication bidirectionnelle entre un client et un serveur. Il nous permet de transférer des données entre le client et le serveur via une connexion persistante. Dans cet article, je vais vous présenter comment créer un serveur WebSocket simple à l'aide de Golang et fournir des exemples de code spécifiques.

  1. Préparation
    Avant de commencer, vous devez vous assurer que vous avez correctement installé Golang. Vous pouvez télécharger le package d'installation sur le site officiel et suivre les instructions pour l'installer.
  2. Importer les dépendances
    Nous devons importer les deux packages de dépendances net/http et github.com/gorilla/websocket. net/http est utilisé pour créer un serveur HTTP et gorilla/websocket est utilisé pour gérer les connexions WebSocket. net/httpgithub.com/gorilla/websocket这两个依赖包。net/http用于创建HTTP服务器,gorilla/websocket用于处理WebSocket连接。
import (
    "net/http"
    "github.com/gorilla/websocket"
)
Copier après la connexion
  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连接
}
Copier après la connexion

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

在上面的示例中,我们使用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)
    }
}
Copier après la connexion

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

rrreee
      Créer un serveur WebSocket
    1. Nous utilisons la fonction http.HandleFunc() pour gérer les demandes de connexion WebSocket, et utilisons websocket.Upgrade()La fonction met à niveau le protocole HTTP vers le protocole WebSocket. <br>
    2. rrreee
    Dans la fonction wsHandler(), nous avons créé un objet Upgrader et défini l'attribut CheckOrigin sur une fonction anonyme, renvoyant de vrais moyens accepter toutes les demandes inter-domaines.


    Ensuite, nous utilisons la fonction Upgrade() pour mettre à niveau le protocole HTTP vers le protocole WebSocket. Si la mise à niveau échoue, un message d'erreur sera imprimé et renvoyé. Si la mise à niveau réussit, nous pouvons utiliser l'objet conn pour gérer la connexion WebSocket.

      🎜Gestion des connexions WebSocket🎜Une fois la connexion WebSocket établie, nous pouvons utiliser l'objet conn pour les opérations de lecture et d'écriture. Voici un exemple de traitement simple : 🎜🎜rrreee🎜Dans l'exemple ci-dessus, nous utilisons la fonction ReadMessage() pour lire le message envoyé par le client, et utilisons WriteMessage()La fonction renvoie le message au client. Si une erreur se produit lors de la lecture ou de l'écriture, nous imprimons le message d'erreur et sortons de la boucle. 🎜
        🎜Démarrez le serveur WebSocket🎜Enfin, nous utilisons la fonction http.HandleFunc() pour enregistrer la fonction wsHandler() comme gestionnaire de WebSocket serveur de connexions et utilisez la fonction http.ListenAndServe() pour démarrer le serveur WebSocket sur le port spécifié. 🎜🎜rrreee🎜Dans l'exemple ci-dessus, nous avons enregistré la fonction wsHandler() en tant que gestionnaire du chemin "/ws". Vous pouvez personnaliser le chemin selon vos besoins. 🎜🎜🎜Test client🎜Maintenant que nous avons terminé la création d'un serveur WebSocket, nous pouvons communiquer avec lui en utilisant n'importe quel client prenant en charge le protocole WebSocket. Vous pouvez tester cela à l'aide des outils de développement de votre navigateur ou utiliser certains outils de test WebSocket. 🎜🎜🎜Résumé🎜Cet article explique comment créer un serveur WebSocket simple à l'aide de Golang et fournit des exemples de code spécifiques. Il est très simple de créer un serveur WebSocket à l'aide de Golang et il peut facilement établir une communication bidirectionnelle. J'espère que cet article vous aidera à comprendre et à utiliser WebSocket. 🎜

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