支持者
默认情况下,sgcWebSocket 使用 WebSocket 作为协议,但您可以在客户端和服务器组件中使用普通 TCP 协议。
客户端组件
禁用 WebSocket 协议。
Client.Specifications.RFC6455 := False;
服务器组件
处理 OnUnknownProtocol 事件,将 Transport 设置为 trpTCP 并接受连接。
procedure OnUnknownProtocol(Connection: TsgcWSConnection; var Accept: Boolean);
begin
Connection.Transport := trpTCP;
Accept := True;
end;
当客户端连接到服务器时,该连接将被定义为 TCP,并使用纯 TCP 协议而非 WebSocket。纯 TCP 连接不区分文本消息和二进制消息,因此所有接收到的消息都通过 OnBinary 事件处理。
消息结束
如果消息较大,有时可能以分片方式接收。可以通过指定要查找的字节来检测消息结尾。示例:在 STOMP 协议中,所有消息均以字节 0 和 10 结尾。
procedure OnWSClientConnect(Connection: TsgcWSConnection);
begin
Connection.TCPEndOfFrameScanBuffer := eofScanAllBytes;
Connection.AddTCPEndOfFrame(0);
Connection.AddTCPEndOfFrame(10);
end;