Maison > Article > développement back-end > Comment utiliser WebSocket dans Golang pour la mise à jour des données en temps réel
Comment utiliser WebSocket dans Golang pour les mises à jour de données en temps réel
Présentation :
WebSocket est une technologie de communication conçue pour la communication en duplex intégral entre un navigateur Web et un serveur. Dans Golang, nous pouvons utiliser net/http
et github.com/gorilla/websocket
dans la bibliothèque standard pour implémenter la fonctionnalité WebSocket. Cet article explique comment utiliser WebSocket dans Golang pour les mises à jour des données en temps réel et fournit quelques exemples de code. net/http
和github.com/gorilla/websocket
来实现WebSocket功能。本文将介绍如何在Golang中使用WebSocket进行实时数据更新,并提供一些代码示例。
步骤:
第一步:创建HTTP服务器
首先,我们需要创建一个HTTP服务器来处理WebSocket连接请求。下面是一个简单的示例代码:
package main import ( "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) log.Println("HTTP server is starting at http://localhost:8080") log.Fatal(http.ListenAndServe(":8080", nil)) }
这段代码创建了一个简单的HTTP服务器,它会将根路径("/")映射到一个名为index.html
的静态文件。
第二步:处理WebSocket连接
接下来,我们需要修改HTTP服务器的代码,以便能够处理WebSocket连接请求。我们可以使用github.com/gorilla/websocket
库来处理WebSocket连接。下面是修改后的示例代码:
package main import ( "log" "net/http" "github.com/gorilla/websocket" ) var ( upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } clients = make(map[*websocket.Conn]bool) ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println("Failed to upgrade connection:", err) return } clients[conn] = true for { _, msg, err := conn.ReadMessage() if err != nil { log.Println("Failed to read message from client:", err) delete(clients, conn) break } for client := range clients { err := client.WriteMessage(websocket.TextMessage, msg) if err != nil { log.Println("Failed to write message to client:", err) client.Close() delete(clients, conn) } } } }) log.Println("WebSocket server is starting at ws://localhost:8080/ws") log.Fatal(http.ListenAndServe(":8080", nil)) }
在这段代码中,我们创建了一个upgrader
对象,并定义了一个clients
变量来保存所有连接的客户端。当有新的WebSocket请求时,我们会将连接升级为WebSocket连接,并将其添加到clients
变量中。然后,我们通过循环读取客户端发来的消息,并把消息发送给所有已连接的客户端。
第三步:创建前端页面
最后,我们需要创建一个前端页面来连接WebSocket服务器,并展示实时数据更新。下面是一个简单的HTML页面示例(index.html
):
<!DOCTYPE html> <html> <head> <title>WebSocket Demo</title> </head> <body> <h1>WebSocket Demo</h1> <input type="text" id="message-input"> <button onclick="send()">Send</button> <ul id="message-list"></ul> <script> var socket = new WebSocket("ws://localhost:8080/ws"); socket.onmessage = function(event) { var message = document.createElement("li"); message.textContent = event.data; document.getElementById("message-list").appendChild(message); }; function send() { var input = document.getElementById("message-input"); var message = input.value; input.value = ""; socket.send(message); } </script> </body> </html>
这段代码创建了一个WebSocket连接并监听onmessage
事件,当有消息到达时,将消息添加到一个ul
Première étape : créer un serveur HTTP
index.html
. 🎜🎜Étape 2 : Gérer les connexions WebSocket🎜Ensuite, nous devons modifier le code du serveur HTTP pour pouvoir gérer les demandes de connexion WebSocket. Nous pouvons utiliser la bibliothèque github.com/gorilla/websocket
pour gérer les connexions WebSocket. Voici l'exemple de code modifié : 🎜rrreee🎜 Dans ce code, nous créons un objet upgrader
et définissons une variable clients
pour contenir tous les clients connectés. Lorsqu'il y a une nouvelle requête WebSocket, nous mettons à niveau la connexion vers une connexion WebSocket et l'ajoutons à la variable clients
. Ensuite, nous lisons le message du client via une boucle et envoyons le message à tous les clients connectés. 🎜🎜Étape 3 : Créer une page frontale🎜Enfin, nous devons créer une page frontale pour nous connecter au serveur WebSocket et afficher les mises à jour des données en temps réel. Ce qui suit est un exemple simple de page HTML (index.html
) : 🎜rrreee🎜Ce code crée une connexion WebSocket et écoute l'événement onmessage
Lorsqu'un message arrive, ajoutez. le message à un élément ul
pour affichage. De plus, une zone de saisie et un bouton d'envoi sont fournis pour que les utilisateurs puissent saisir des messages et les envoyer au serveur via WebSocket. 🎜🎜Résumé : 🎜Grâce aux étapes ci-dessus, nous pouvons utiliser WebSocket dans Golang pour les mises à jour des données en temps réel. En créant des serveurs HTTP, en gérant les connexions WebSocket et en interagissant avec les pages frontales, nous pouvons réaliser une communication de données en temps réel dans les applications Web. Bien entendu, il ne s’agit que d’un exemple simple qui devra peut-être être étendu et modifié en fonction des besoins spécifiques lors de l’utilisation réelle. J'espère que cet article vous a été utile et je vous souhaite du succès dans votre utilisation de 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!