Maison > Article > développement back-end > Tutoriel Golang Websocket : Comment développer la fonction de transfert de fichiers en ligne
Tutoriel Golang Websocket : Comment développer une fonction de transfert de fichiers en ligne
Introduction :
Avec le développement rapide d'Internet, le transfert de fichiers est devenu un besoin auquel les gens sont souvent confrontés sur le réseau. Grâce à la technologie Websocket, nous pouvons facilement mettre en œuvre des fonctions de transfert de fichiers en ligne. Cet article expliquera comment utiliser Golang pour développer une application de transfert de fichiers en ligne basée sur Websocket et fournira des exemples de code spécifiques.
1. Introduction à Websocket
Websocket est un protocole de communication full-duplex basé sur une connexion TCP. Il peut établir une connexion persistante entre le navigateur et le serveur pour réaliser une transmission de données en temps réel. Par rapport au protocole HTTP traditionnel, Websocket présente une latence plus faible, des performances de concurrence plus élevées et de meilleures capacités de transmission de données, ce qui en fait un choix idéal pour développer des applications en temps réel et des fonctions interactives en ligne.
2. Préparation de l'environnement de développement
Pour terminer ce tutoriel, vous devez d'abord installer l'environnement de développement Golang et avoir une certaine base de programmation Golang. Dans le même temps, nous devons également introduire une bibliothèque Websocket tierce pour un développement rapide.
Installez la bibliothèque Websocket tierce :
go get github.com/gorilla/websocket
3. Structure du projet et description du code
Notre projet contiendra deux fichiers principaux : main.go et index.html. Parmi eux, main.go est le code serveur et index.html est le code client. Ci-dessous, nous présenterons l'implémentation du code de ces deux fichiers un par un.
main.go :
Importer les packages requis :
package main import ( "log" "net/http" "github.com/gorilla/websocket" )
Définir le programme de mise à niveau de la connexion WebSocket :
var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true }, }
Définir la fonction du gestionnaire WebSocket :
func websocketHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } // 处理文件传输逻辑 }
Démarrer le serveur HTTP et enregistrer le Web Dispositif de gestion des prises :
func main() { http.HandleFunc("/ws", websocketHandler) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) log.Println("Server started on localhost:8000") log.Fatal(http.ListenAndServe(":8000", nil)) }
index.html :
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件传输</title> </head> <body> <input type="file" id="file" name="file" /> <button onclick="sendFile()">传输文件</button> <script> var ws = new WebSocket("ws://localhost:8000/ws"); ws.onopen = function(){ console.log("已连接"); } ws.onmessage = function(e){ console.log("接收到消息"); // 处理接收到的文件数据 } ws.onclose = function(){ console.log("连接已关闭"); } function sendFile(){ var fileInput = document.getElementById("file"); var file = fileInput.files[0]; if(file){ var reader = new FileReader(); reader.readAsBinaryString(file); reader.onload = function(e){ var fileData = e.target.result; ws.send(fileData); } } } </script> </body> </html>
IV. Implémentation du transfert de fichiers
Dans la fonction websocketHandler de main.go, nous pouvons écrire une logique de transfert de fichiers spécifique. Voici un exemple de lecture et d'envoi simple de fichier :
func websocketHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } // 文件读取 filePath := "example.txt" file, err := os.Open(filePath) if err != nil { log.Println(err) return } defer file.Close() fileData, err := ioutil.ReadAll(file) if err != nil { log.Println(err) return } // 文件发送 if err := conn.WriteMessage(websocket.BinaryMessage, fileData); err != nil { log.Println(err) return } }
Dans index.html, nous utilisons l'objet FileReader de JavaScript pour lire les données du fichier à transférer et les envoyer au serveur via WebSocket :
function sendFile(){ var fileInput = document.getElementById("file"); var file = fileInput.files[0]; if(file){ var reader = new FileReader(); reader.readAsBinaryString(file); reader.onload = function(e){ var fileData = e.target.result; ws.send(fileData); } } }
5. Exécutez le projet
Dans la ligne de commande, entrez le répertoire du projet et exécutez la commande suivante pour démarrer le serveur :
go run main.go
Puis visitez http://localhost:8000 dans le navigateur, cliquez sur le bouton "Transférer le fichier" et sélectionnez un fichier à transférer. Le serveur lit les données du fichier et les envoie au client, et le client reçoit et traite les données du fichier via WebSocket. À ce stade, le développement d'une fonction de transfert de fichiers en ligne basée sur Golang et Websocket est terminé.
Conclusion :
Cet article explique comment utiliser Golang pour développer une application de transfert de fichiers en ligne basée sur Websocket et fournit des exemples de code spécifiques. En utilisant Golang et Websocket, nous pouvons facilement implémenter la fonction de transfert de fichiers en temps réel. J'espère que ce tutoriel sera utile pour apprendre et développer des applications 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!