什么是 WebSocket?
WebSocket 是一种通过单个 TCP 套接字提供双向全双工通信通道的 Web 技术,由 IETF 标准化为 RFC 6455。
WebSocket 是一种通过单个 TCP 套接字提供双向全双工通信通道的 Web 技术,由 IETF 标准化为 RFC 6455。
WebSocket 实现浏览器与服务器之间持久的双向通信,无需持续轮询。
传统 HTTP 遵循请求-响应模式,客户端必须发起每次交互。WebSocket 将 HTTP 连接升级为持久的全双工通道,客户端和服务器均可随时发送数据。这消除了重复 HTTP 握手的开销,实现了真正的实时交互,例如实时资讯推送、在线游戏、协作编辑和金融行情等应用场景。
WebSocket 连接以 HTTP 升级请求开始,随后转变为持久的二进制帧协议。
客户端发送携带 Upgrade: websocket 和 Connection: Upgrade 头部的 HTTP GET 请求,以及随机生成的 Sec-WebSocket-Key。
服务器响应 HTTP 101 协议切换,确认升级完成。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;