クライアントとサーバーの通信で「HTTP 101プロトコル切り替え」はどのように機能しますか?

クライアントとサーバーの通信で「HTTP 101プロトコル切り替え」はどのように機能しますか?

NGINX私はLinuxプラットフォームにインストールされているWebサーバーから提供されるWebサイトを開発しています。このウェブサイトが提供するサービスの1つは、以下に基づいています。ウェブソケットバックエンドサーバー。

より具体的には、NGINX設定は、NGINXがクライアントから次の種類の要求を受け取るときを指定します。

GET /websockify HTTP/1.1

要求は次にリダイレクト(プロキシ)されます。WebSocketバックエンドサーバー。このような構成は、以下の設定ブロックを介して行われる。

location /websockify {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

受け取るワイヤーシャーククライアントがHTTP要求を送信し、HTTP要求に次の2つのヘッダーが含まれていることを確認しました。

Connection: Upgrade
Upgrade: websocket

NGINX は、次の種類の HTTP 応答を送信します。

101 Swiching Protocols

その後(Wireshark情報によると)、通信はHTTPから次のようになります。ウェブソケットわかりません。

時々私のFirefoxブラウザ(この場合はクライアントとして動作しています)が動作を停止し、WebSocketバックエンドサーバーとの接続を確立できません。

ウェブサイトの設定にエラーがないことを確認するために、次の質問をしたいと思います。プロトコル切り替えはブラウザで実装されていますか?移行後、ブラウザは移行前とは異なる方法でデータの送信を開始しますか?

このトピックに関する追加情報を提供していただきありがとうございます。

ありがとう

ベストアンサー1

これWebSocket ウィキペディアページ良い概要があるようで、ページの下にプロトコルをHTTPからWebSocketに切り替えるためにクライアントとサーバーコードで使用されるハンドシェイクが説明されています。

おすすめ記事