Socket.IO 客户端
从 Delphi/C++ Builder 连接到 Socket.IO 服务器。使用 Engine.IO 传输以及带有 ACK 和房间功能的 Socket.IO 事件/命名空间层。
从 Delphi/C++ Builder 连接到 Socket.IO 服务器。使用 Engine.IO 传输以及带有 ACK 和房间功能的 Socket.IO 事件/命名空间层。
Socket.IO v3/v4 协议的客户端——Engine.IO 传输、命名空间、事件发送/接收、ACK 回调和二进制附件。
TsgcWSAPI_SocketIO
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
与目标为 /socket.io/ 且带有 EIO=4&transport=websocket 的 TsgcWebSocketClient 配对——组件处理 Engine.IO 握手,并允许您发送/订阅事件。
uses
sgcWebSocket, sgcWebSocket_API_SocketIO;
var
WSClient: TsgcWebSocketClient;
SIO: TsgcWSAPI_SocketIO;
begin
WSClient := TsgcWebSocketClient.Create(nil);
WSClient.URL := 'wss://server.example.com/socket.io/?EIO=4&transport=websocket';
SIO := TsgcWSAPI_SocketIO.Create(nil);
SIO.Client := WSClient;
WSClient.Active := True;
SIO.Emit('/', 'chat:message',
'{"user":"alice","text":"hello"}');
end;
// uses: sgcWebSocket, sgcWebSocket_API_SocketIO
TsgcWebSocketClient *WSClient = new TsgcWebSocketClient(this);
WSClient->URL = "wss://server.example.com/socket.io/?EIO=4&transport=websocket";
TsgcWSAPI_SocketIO *SIO = new TsgcWSAPI_SocketIO(this);
SIO->Client = WSClient;
WSClient->Active = true;
SIO->Emit("/", "chat:message",
"{\"user\":\"alice\",\"text\":\"hello\"}");
在单个 TsgcWebSocketClient 上同时实现 Engine.IO 传输层(ping/pong、升级)和 Socket.IO 消息层(CONNECT、EVENT、ACK、DISCONNECT)。
处理 EIO=4 握手、25 秒的 ping/pong 节奏和协议升级路径。组件自动协商有效载荷编码(文本或二进制)。
Connect(namespace) 在同一传输上打开额外的命名空间。Emit(namespace, event, args) 针对选定的命名空间;OnSocketIOEvent 报告每个事件的原始命名空间。
向 Emit 传递带有 ACK 标识符的回调——当服务器回复时,组件使用匹配的 ID 和 JSON 参数触发 OnSocketIOAck。
Socket.IO v4 支持交错的二进制有效载荷。组件保留占位符,并将每个附件作为流与 JSON 信封一起呈现。
绑定底层 TsgcWebSocketClient WatchDog 以自动重连——重新打开时,组件为每个活跃命名空间重新发送 CONNECT 数据包。
Socket.IO 房间是服务器端概念;组件通过在服务器定义的任何房间合约上发送 join / leave 事件来参与。
本组件实现协议的权威来源。