WebSocket とは?
WebSocket は、単一の TCP ソケットで双方向の全二重通信チャネルを提供する Web テクノロジーです。IETF により RFC 6455 として標準化されています。
WebSocket は、単一の TCP ソケットで双方向の全二重通信チャネルを提供する Web テクノロジーです。IETF により RFC 6455 として標準化されています。
WebSocket は、常時ポーリングなしにブラウザとサーバー間の持続的な双方向通信を実現します。
従来の HTTP はクライアントがすべてのやり取りを開始するリクエスト・レスポンスパターンに従います。WebSocket は HTTP 接続を持続的な全二重チャネルにアップグレードし、クライアントとサーバーの両方がいつでもデータを送信できるようにします。これにより繰り返しの HTTP ハンドシェイクのオーバーヘッドが排除され、ライブフィード、オンラインゲーム、共同編集、金融ティッカーなどの真のリアルタイムインタラクションが実現します。
WebSocket 接続は HTTP アップグレードリクエストとして始まり、その後、持続的なバイナリフレームプロトコルに移行します。
クライアントは Upgrade: websocket および Connection: Upgrade ヘッダーとランダムな Sec-WebSocket-Key を含む HTTP GET リクエストを送信します。
サーバーは HTTP 101 Switching Protocols で応答し、アップグレードを確認します。TCP 接続は WebSocket チャネルになります。
両側は最小 2 バイトのオーバーヘッドでテキストまたはバイナリフレームを自由に送受信できます。どちらかが閉じるまで接続は維持されます。
数行のコードで 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;