TsgcWebSocketServer › 事件 › OnSendBufferFull
当客户端连接的出站队列达到 QueueOptions.MaxQueueSize 时、在应用溢出策略之前触发。
property OnSendBufferFull: TsgcWSSendBufferFullEvent;
// TsgcWSSendBufferFullEvent = procedure(Connection: TsgcWSConnection; const QueueSize: Integer; var DropMessage: Boolean) of object
—
仅当消息排队处于活动状态且 QueueOptions.MaxQueueSize 大于零时才会触发:每当有消息即将加入某个连接的队列、而该连接的队列已包含 MaxQueueSize 条消息时,就会触发此事件,并传入受影响的 Connection 和当前的 QueueSize。DropMessage 传入时为 True;保持不变则由 QueueOptions.OverflowPolicy 决定后续行为(qopDropOldest 丢弃队列中最旧的消息,qopDropNewest 丢弃新消息,qopDisconnect 丢弃新消息并关闭连接);将其设置为 False 则仍然接受该消息,允许队列超出限制继续增长。使用此事件可在慢速消费者耗尽服务器内存之前检测到它们。
procedure OnSendBufferFull(Connection: TsgcWSConnection; const QueueSize: Integer;
var DropMessage: Boolean);
begin
WriteLn('#slow consumer ' + Connection.Guid + ': ' + IntToStr(QueueSize) + ' messages queued');
end;