web-dev-qa-db-ja.com

Webソケットプロトコルハンドシェイクとスイッチングプロトコル

これら2つの応答ステータスの違いは何ですか?

HTTP/1.1 101 Web Socket Protocol Handshake

HTTP/1.1 101 Switching Protocols

どれを取得するかは重要ですか?

18
0101

何の違いもありません。重要なのは、ハンドシェイクが進行中であることを示す101応答コードです。これは RFC 6455 で定義されています。

クライアントからのリーディングラインは、Request-Lineフォーマットに従います。 サーバーからの先頭行は、Status-Line形式に従います。 Request-LineおよびStatus-Lineプロダクションは、[RFC2616]で定義されています。

...

サーバーからのハンドシェイクは、クライアントのハンドシェイクよりもはるかに簡単です。 最初の行はHTTPステータス行で、ステータスコードは101です。

HTTP/1.1 101スイッチングプロトコル

101以外のステータスコードは、WebSocketハンドシェイクが完了しておらず、HTTPのセマンティクスが引き続き適用されることを示します。

Status-Lineのテキストは任意であり、サーバーは RFC 2616 に従って任意のテキストを使用できます。

Status-Line = HTTP-Version SP Status-Code SPReason-PhraseCRLF

...

Status-Code要素は、要求を理解して満足する試みの3桁の整数の結果コードです。これらのコードはセクション10で完全に定義されています。Reason-Phraseは、Status-Codeの短いテキスト記述を提供することを目的としています。 Status-Codeはオートマトンによる使用を目的としており、Reason-Phraseは人間のユーザーを対象としています。クライアントは、Reason-Phraseを確認または表示する必要はありません。

Switching Protocolsは、たまたま RFC 6455 の例で使用されているものですが、これは必須ではありません。

22
Remy Lebeau