ホームページ  >  記事  >  バックエンド開発  >  Golang Fiber の WebSocket クライアントの場合、HTTP クライアント/接続を WebSocket に変換するにはどうすればよいですか?

Golang Fiber の WebSocket クライアントの場合、HTTP クライアント/接続を WebSocket に変換するにはどうすればよいですか?

王林
王林転載
2024-02-14 21:06:091236ブラウズ

对于 Golang Fiber 的 WebSocket 客户端,如何将 HTTP 客户端/连接转变为 WebSocket?

php エディタ Xinyi は、Golang Fiber の WebSocket クライアントの変換に関する質問への回答を提供します。 Golang Fiber を使用して開発する場合、HTTP クライアントまたは接続を WebSocket クライアントに変換する必要がある場合があります。これにより、同じ接続上で HTTP と WebSocket 間の双方向通信が可能になります。次に、この変換プロセスを達成する方法を詳しく説明します。以下の手順で、Golang Fiber で WebSocket クライアントを使用した開発を簡単に行うことができます。

質問の内容

背景情報については、この最近の stackoverflow 記事を参照してください。

次のように Golang Fiber を使用して WebSocket サービスを設定しています:

リーリー

次のように UpgradeHandler ミドルウェアを使用します:

リーリー

サービスの HTTP クライアントが http://chat.acme.ai:80/ws/123 などに対して HTTP GET リクエストを作成し、Fibre サーバーに WebSocket サービスを強制的に開くことを期待します。例えば:### リーリー

WebSocket が閉じるまでストリーミング メディアを取り込みます。

質問: クライアントが Fiber サービスに対して HTTP GET リクエストを送信して、Fibre 側で WebSocket サービスを開始する場合、クライアント ロジックはどのようにして HTTP クライアントを WebSocket クライアントに変換しますか?

直感的には、どこかにソケットがあるだけであり、HTTP クライアントを WebSocket クライアントにアップグレードすることは、HTTP クライアントに適切な「接着剤」を追加するだけです。しかし、Java WebSocket のような固定ソリューションを使用するという観点から見ると、HTTP クライアントを WebSocket クライアントに変える方法はまったく明確ではありません。

回避策

ここでは Golang/Fiber が偶然使用されています。定義上、WebSocket プロトコルはサービス エンドポイントへの HTTP GET リクエストを開始し、ハンドシェイク中にトランスポート プロトコルが HTTP から WebSocket にアップグレードされます。このアップグレードの一環として、リクエストとレスポンスの両方の HTTP ヘッダーが変更されます。以下のチャット関連の例を参照してください。

アップグレードされたリクエストヘッダー:

リーリー

サーバー応答:

リーリー

これらの例は、この

WebSocket に関する記事 . から引用しています。

以上がGolang Fiber の WebSocket クライアントの場合、HTTP クライアント/接続を WebSocket に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。