


Pour le client WebSocket de Golang Fiber, comment convertir le client/connexion HTTP en WebSocket ?
l'éditeur php Xinyi vous apporte des réponses aux questions sur la transformation du client WebSocket de Golang Fiber. Lors du développement avec Golang Fiber, nous devons parfois convertir le client HTTP ou la connexion en client WebSocket. Cela permet une communication bidirectionnelle entre HTTP et WebSocket sur la même connexion. Nous détaillerons ensuite comment réaliser ce processus de transformation. Avec les étapes suivantes, vous pourrez facilement développer à l'aide du client WebSocket dans Golang Fiber.
Contenu de la question
Pour des informations générales, consultez cet article récent sur stackoverflow.
Je mets en place un service WebSockets utilisant Golang Fiber comme suit :
app.Use("/ws", handler.UpgradeHandler) app.Get("/ws/:id", websocket.New(func(ws *websocket.Conn) { handler.MediaStreamHandler(ws) }))
Utilisez UpgradeHandler
middleware comme ceci :
func UpgradeHandler(c *fiber.Ctx) error { // IsWebSocketUpgrade returns true if the client // requested upgrade to the WebSocket protocol. if websocket.IsWebSocketUpgrade(c) { log.Info("request to open WebSockets channel") return c.Next() } return fiber.ErrUpgradeRequired }
S'attend à ce que le client HTTP du service fasse une requête HTTP GET à http://chat.acme.ai:80/ws/123
etc et force le serveur Fibre à ouvrir le service WebSockets. Par exemple :
func MediaStreamHandler(c *websocket.Conn) { ... for { if mt, buf, err = c.ReadMessage(); err != nil { ... } ... }
Nous y ingérons des flux jusqu'à la fermeture de WebSocket.
Question : Si un client émet une requête HTTP GET à un service Fibre pour démarrer un service WebSockets côté Fibre, comment la logique client transforme-t-elle son client HTTP en client WebSockets ?
Intuitivement, nous avons juste un socket quelque part, et la mise à niveau d'un client HTTP vers un client WebSockets consiste simplement à ajouter la bonne « colle » au client HTTP. Mais du point de vue de l'utilisation d'une solution fixe comme Java WebSockets, il n'est pas du tout clair comment transformer un client HTTP en client WebSockets.
Solution de contournement
Golang/Fiber est accidentel ici. Par définition, le protocole WebSockets initie une requête HTTP GET vers un point de terminaison de service ; lors de la prise de contact, le protocole de transport est mis à niveau de HTTP vers WebSockets. Une partie de cette mise à niveau réside dans la modification des en-têtes HTTP des requêtes et des réponses. Consultez les exemples liés au chat ci-dessous.
En-têtes de requête mis à jour :
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHmbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 Origin: http://example.com
Réponse du serveur :
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sM1YUkAGmm50PpG2HaGWk= Sec-WebSocket-Protocol: chat
Ces exemples sont tirés de cet article sur les WebSockets .
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Oui, la production de pages H5 est une méthode de mise en œuvre importante pour le développement frontal, impliquant des technologies de base telles que HTML, CSS et JavaScript. Les développeurs construisent des pages H5 dynamiques et puissantes en combinant intelligemment ces technologies, telles que l'utilisation du & lt; Canvas & gt; Tag pour dessiner des graphiques ou utiliser JavaScript pour contrôler le comportement d'interaction.

La méthode de personnalisation des symboles de redimension dans CSS est unifiée avec des couleurs d'arrière-plan. Dans le développement quotidien, nous rencontrons souvent des situations où nous devons personnaliser les détails de l'interface utilisateur, tels que l'ajustement ...

Concernant les raisons et les solutions pour l'affichage mal aligné des éléments de blocage en ligne. Lors de la mise en page de la page Web, nous rencontrons souvent des problèmes d'affichage apparemment étranges. Comparer...

Prix USD Bitcoin en temps réel Facteurs qui affectent le prix du bitcoin Indicateurs pour prédire les prix des futurs bitcoins Voici quelques informations clés sur le prix du bitcoin en 2018-2024:

Comment utiliser JavaScript ou CSS pour contrôler le haut et la fin de la page dans les paramètres d'impression du navigateur. Dans les paramètres d'impression du navigateur, il existe une option pour contrôler si l'écran est ...

Comment réaliser l'effet de courbe à 45 degrés du segmenter? Dans le processus de mise en œuvre du segmentant, comment faire transformer la bordure droite en une courbe de 45 degrés lorsque vous cliquez sur le bouton gauche, et le point ...

Conseils pour implémenter les effets des segments dans la conception de l'interface utilisateur, le segmenter est un élément de navigation commun, en particulier dans les applications mobiles et les pages Web réactives. ...

Le problème de l'ouverture des conteneurs en raison d'une omission excessive du texte sous disposition flexible et de solutions est utilisé ...
