TCP 長接続#
HTTP/1.1 デフォルトは長接続(Connection はデフォルトで Keep-alive)であるため、指定された時間(タイムアウト時間)内にリクエストを保持し、サーバーとクライアントの負荷上限に達しない限り、長期間保持することができます。
短接続に比べて、リクエスト間の開閉操作が少なくなります。
websocket 長接続#
websocket は TCP プロトコルに基づく双方向伝送プロトコルで、HTTP/1.1 プロトコルの 101 ステータスコードでハンドシェイクを行います。
websocket は HTTP プロトコルでハンドシェイクを行った後、以降の通信は TCP プロトコルを通じて行われ、HTTP プロトコルは使用されません。
違い#
- websocket はフルデュプレックスプロトコルであるため、サーバーはクライアントにデータを積極的に送信できますが、TCP 長接続はクライアントがリクエストを開始するのを待つ必要があります。
- websocket は接続を確立してから通信を維持するため、以降の通信では一部の状態情報を省略できますが、TCP 長接続では毎回のリクエストで状態情報を持ち運ぶ必要がある場合があります。