WebSocket とは?

WebSocket は、単一の TCP ソケットで双方向の全二重通信チャネルを提供する Web テクノロジーです。IETF により RFC 6455 として標準化されています。

リアルタイム通信

WebSocket は、常時ポーリングなしにブラウザとサーバー間の持続的な双方向通信を実現します。

HTTP リクエスト・レスポンスを超えて

従来の HTTP はクライアントがすべてのやり取りを開始するリクエスト・レスポンスパターンに従います。WebSocket は HTTP 接続を持続的な全二重チャネルにアップグレードし、クライアントとサーバーの両方がいつでもデータを送信できるようにします。これにより繰り返しの HTTP ハンドシェイクのオーバーヘッドが排除され、ライブフィード、オンラインゲーム、共同編集、金融ティッカーなどの真のリアルタイムインタラクションが実現します。

  • 双方向:クライアントとサーバーの両方からデータをプッシュ可能
  • 持続的な接続により遅延とオーバーヘッドを削減
  • 標準 TCP ポート 80/443 で動作し、ファイアウォールを通過
  • IETF により RFC 6455 として標準化
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

WebSocket ハンドシェイク

WebSocket 接続は HTTP アップグレードリクエストとして始まり、その後、持続的なバイナリフレームプロトコルに移行します。

1. HTTP アップグレードリクエスト

クライアントは Upgrade: websocket および Connection: Upgrade ヘッダーとランダムな Sec-WebSocket-Key を含む HTTP GET リクエストを送信します。

2. サーバーが承認

サーバーは HTTP 101 Switching Protocols で応答し、アップグレードを確認します。TCP 接続は WebSocket チャネルになります。

3. 全二重メッセージング

両側は最小 2 バイトのオーバーヘッドでテキストまたはバイナリフレームを自由に送受信できます。どちらかが閉じるまで接続は維持されます。

Delphi WebSocket サンプル

数行のコードで WebSocket サーバーに接続してメッセージをやり取りできます。

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'echo.websocket.org';
  WSClient.Port := 443;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Handle incoming messages
  Memo1.Lines.Add('Received: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a text message to the server
  WSClient.WriteData('Hello, WebSocket!');
end;

リアルタイムアプリケーションを構築する準備はできましたか?

sgcWebSockets をダウンロードして、Delphi、C++ Builder、または .NET プロジェクトに今すぐ WebSocket サポートを追加しましょう。