TsgcWebSocketHTTPServer › 事件 › OnFragmented
当接收到消息的分片时触发(仅当 Options.FragmentedMessages 为 frgAll 或 frgOnlyFragmented 时)。
property OnFragmented: TsgcWSFragmentedEvent;
// TsgcWSFragmentedEvent = procedure(Connection: TsgcWSConnection; const Data: TMemoryStream; const OpCode: TOpCode; const Continuation: Boolean) of object
—
默认情况下(Options.FragmentedMessages = frgOnlyBuffer),服务器缓冲 WebSocket 消息的分片,并在接收到完整负载后触发 OnMessage 或 OnBinary。将 FragmentedMessages 设置为 frgOnlyFragmented 可只在每个分片处接收 OnFragmented,或设置为 frgAll 以在每个分片处接收 OnFragmented,然后在消息完整时接收 OnMessage/OnBinary。Data 参数是包含当前分片字节的 TMemoryStream,OpCode 表示原始帧类型(文本、二进制、续传……),当还有更多分片时 Continuation 为 True,最后一个分片时为 False。此事件对报告大型上传的进度非常有用。
procedure OnFragmented(Connection: TsgcWSConnection; const Data: TMemoryStream;
const OpCode: TOpCode; const Continuation: Boolean);
begin
ShowProgress(Data.Size);
if not Continuation then
SaveStream(Data);
end;