TsgcWebSocketHTTPServer › Ereignisse › OnCreateSession
Wird ausgelöst, wenn der HTTP-Server eine neue Sitzung erstellen muss, sodass die Anwendung eine benutzerdefinierte TIdHTTPSession-Instanz bereitstellen kann.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession wird vom zugrunde liegenden Indy-HTTP-Server aufgerufen, wenn SessionState auf True steht und eine neue Sitzung erstellt werden soll, typischerweise wenn eine Anfrage ohne gültiges Sitzungs-Cookie eintrifft und AutoStartSession auf True steht. Wenn der Handler VHTTPSession als nil belässt, erstellt der Server die Sitzung selbst.
Dieses Ereignis ist nicht die empfohlene Art, Ihre eigene Sitzungsklasse zu verwenden. Wenn Sie eine Instanz zurückgeben, fügt der Server sie nur der Sitzungsliste hinzu; er weist ihr keine Sitzungs-Id zu. Eine mit einem einfachen Konstruktor erstellte Sitzung hat daher eine leere Sitzungs-Id und ein leeres Sitzungs-Cookie und kann bei der nächsten Anfrage nie wieder gefunden werden. Verwenden Sie stattdessen SessionClass, das Ihren Abkömmling erstellt und dennoch die eindeutige Sitzungs-Id, das Cookie und die Timeout-Behandlung für Sie erzeugt.
Rufen Sie außerdem SessionList.CreateUniqueSession nicht innerhalb dieses Ereignisses auf. Diese Methode fügt die neue Session bereits zur Liste hinzu, und der Server fügt sie erneut hinzu, wenn der Handler zurückkehrt, sodass dieselbe Session doppelt in der Liste landet. Das vollständige Bild finden Sie unter Sessions. Verwenden Sie OnSessionStart, um einfach zu reagieren, wenn eine Session aktiv wird.
procedure OnCreateSession(ASender: TIdContext; var VHTTPSession: TIdHTTPSession);
begin
// leave VHTTPSession as nil to let the server create the session
Log('new HTTP session allocated');
end;