基本原理のWebSocket

  • リクエスト内のHTTPは、唯一つの応答することができます。そして、応答は受動的であり、開始することはできません
    • そのため、過去のサービス側のプッシュ情報は、ポーリングを達成するために、クライアントによって保持されます
  • WebSocketのは、双方向の情報をプッシュするためのイニシアチブを取るために、サーバーの容量を提供する通信プロトコル
  • それがなるなり、接続、作成するのWebSocket必要ステートフルなプロトコルを、ステータス情報は、部分的な通信の後に省略することができます。ステートレスの HTTPリクエストは、リクエストごとに(等認証等)の状態情報を運ぶために持っている必要があるかもしれません
  • デフォルトのポートは80と443であります
  • 必要クライアント(ブラウザ)とサーバーの両方をサポート
  • エージェントの後に、エージェントはまた、サポートが必要な場合は、それ以外のいくつかのエージェントは、自動的に通信することなく、ときに長い時間が切断されます
    • したがって、WS接続が切断されていないことを確認するためには、ハートビートを送信します
  • WebSocketの接続が確立された後、後続のデータは、フレームのシーケンスの形で送信されます
    • HTTPは、WebSocketの接続を確立するための唯一の責任があります
    • HTTPヘッダを交換することができ、後続のデータを送信する必要はありません。
      • 情報交換の効率を向上させます

[投棄外国チェーンの写真が失敗し、発信局は、直接アップロード(IMG-orBOqaVO-1578405029023)(/ユーザ/ wuwentao /ライブラリ/ Application Support / typora-ユーザー画像/画像-20200107213754408ダウン画像を保存することが推奨され、セキュリティチェーン機構を有していてもよいです.PNG)]

  • WebSocketは、HTTPプロトコルに基づいて、またはされ借りハンドシェークの完全な部分にHTTPプロトコルを
    • Sec-WebSocket-Keyの妥当性を検証するためにサーバーのブラウザで生成されたBase64の値であります
    • Sec-WebSocket-Acceptサーバーが識別され、暗号化された後、Sec-WebSocket-Key
      • なりますSec-WebSocket-Key258EAFA5-E914-47DA-95CA-C5AB0DC85B11ステッチ
      • SHA1ダイジェストで計算され、base64文字列に変換されます。
  • HTTPリクエストに応答して完了ステータス・コードの後に101交換プロトコルを示します、
    • 彼らはhttpプロトコルとは何の関係もありませんした後、説明用WebSocketプロトコルは、HTTPプロトコルを介してTCPトランスポート層接続を確立します
// 客户端请求
GET ws://example.com/ 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

// 服务器应答
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
公開された161元の記事 ウォン称賛19 ビュー50000 +

おすすめ

転載: blog.csdn.net/winter_wu_1998/article/details/103882450