WebSocket이란?
WebSocket은 단일 TCP 소켓 위에서 양방향, 전이중 통신 채널을 제공하는 웹 기술이에요. IETF에서 RFC 6455로 표준화되었어요.
WebSocket은 단일 TCP 소켓 위에서 양방향, 전이중 통신 채널을 제공하는 웹 기술이에요. 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;