Heim > Artikel > Backend-Entwicklung > Wie konvertiert man für den WebSocket-Client von Golang Fiber den HTTP-Client/die HTTP-Verbindung in WebSocket?
php-Editor Xinyi liefert Ihnen Antworten auf die Fragen zur Transformation des WebSocket-Clients von Golang Fibre. Bei der Entwicklung mit Golang Fiber müssen wir manchmal den HTTP-Client oder die Verbindung in einen WebSocket-Client konvertieren. Dies ermöglicht eine bidirektionale Kommunikation zwischen HTTP und WebSocket über dieselbe Verbindung. Als Nächstes werden wir im Detail erläutern, wie dieser Transformationsprozess erreicht werden kann. Mit den folgenden Schritten können Sie problemlos mit dem WebSocket-Client in Golang Fiber entwickeln.
Hintergrundinformationen finden Sie in diesem aktuellen Stackoverflow-Artikel.
Ich richte einen WebSockets-Dienst mit Golang Fiber wie folgt ein:
app.Use("/ws", handler.UpgradeHandler) app.Get("/ws/:id", websocket.New(func(ws *websocket.Conn) { handler.MediaStreamHandler(ws) }))
Verwenden Sie UpgradeHandler
Middleware wie folgt:
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 }
Erwartet, dass der HTTP-Client des Dienstes eine HTTP-GET-Anfrage an http://chat.acme.ai:80/ws/123
etc sendet, und zwingt den Fiber-Server, den WebSockets-Dienst zu öffnen. Zum Beispiel:
func MediaStreamHandler(c *websocket.Conn) { ... for { if mt, buf, err = c.ReadMessage(); err != nil { ... } ... }
Wir nehmen darin Streaming-Medien auf, bis WebSocket geschlossen wird.
Frage: Wenn ein Client eine HTTP-GET-Anfrage an einen Fiber-Dienst sendet, um einen WebSockets-Dienst auf der Fiber-Seite zu starten, wie verwandelt die Client-Logik seinen HTTP-Client in einen WebSockets-Client?
Intuitiv haben wir einfach irgendwo einen Socket, und das Upgrade eines HTTP-Clients auf einen WebSockets-Client ist nur eine Frage des Hinzufügens des richtigen „Klebstoffs“ zum HTTP-Client. Aber aus der Perspektive der Verwendung einer festen Lösung wie Java WebSockets ist überhaupt nicht klar, wie man einen HTTP-Client in einen WebSockets-Client umwandelt.
Golang/Fiber ist hier ein Zufall. Per Definition initiiert das WebSockets-Protokoll während des Handshakes eine HTTP-GET-Anfrage an einen Dienstendpunkt. Das Transportprotokoll wird von HTTP auf WebSockets aktualisiert. Ein Teil dieses Upgrades besteht darin, dass HTTP-Header sowohl in Anfragen als auch in Antworten geändert werden. Sehen Sie sich unten die Chat-Beispiele an.
Aktualisierte Anforderungsheader:
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
Serverantwort:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sM1YUkAGmm50PpG2HaGWk= Sec-WebSocket-Protocol: chat
Diese Beispiele stammen aus diesem Artikel über WebSockets .
Das obige ist der detaillierte Inhalt vonWie konvertiert man für den WebSocket-Client von Golang Fiber den HTTP-Client/die HTTP-Verbindung in WebSocket?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!