TsgcWebSocketHTTPServerZdarzenia › OnSendBufferFull

OnSendBufferFull Zdarzenie

Uruchamiane, gdy kolejka wychodząca połączenia WebSocket osiągnie QueueOptions.MaxQueueSize, zanim zostanie zastosowana polityka przepełnienia.

Składnia

property OnSendBufferFull: TsgcWSSendBufferFullEvent;
// TsgcWSSendBufferFullEvent = procedure(Connection: TsgcWSConnection; const QueueSize: Integer; var DropMessage: Boolean) of object

Wartość domyślna

Uwagi

Uruchamiane tylko wtedy, gdy kolejkowanie wiadomości jest aktywne, a QueueOptions.MaxQueueSize jest większe od zera: za każdym razem, gdy wiadomość ma zostać dodana do kolejki połączenia, którego kolejka zawiera już MaxQueueSize wiadomości, zdarzenie jest wywoływane z danym połączeniem Connection i bieżącą wartością QueueSize. DropMessage przychodzi jako True; pozostawienie go bez zmian pozwala QueueOptions.OverflowPolicy zdecydować, co się stanie (qopDropOldest odrzuca najstarszą wiadomość z kolejki, qopDropNewest odrzuca nową wiadomość, qopDisconnect odrzuca ją i zamyka połączenie); ustawienie go na False powoduje mimo wszystko przyjęcie wiadomości i pozwala kolejce przekroczyć limit. To zdarzenie służy do wykrywania powolnych konsumentów, zanim wyczerpią oni pamięć serwera. Zwykłe żądania HTTP nie są kolejkowane, więc zgłaszają je tylko połączenia WebSocket.

Przykład


procedure OnSendBufferFull(Connection: TsgcWSConnection; const QueueSize: Integer;
  var DropMessage: Boolean);
begin
  WriteLn('#slow consumer ' + Connection.Guid + ': ' + IntToStr(QueueSize) + ' messages queued');
end;

Powrót do Zdarzeń