TsgcWebSocketHTTPServer › Events › OnCreateSession
Wordt geactiveerd wanneer de HTTP-server een nieuwe sessie moet aanmaken zodat de toepassing een aangepaste TIdHTTPSession-instantie kan aanleveren.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession wordt aangeroepen door de onderliggende Indy HTTP-server wanneer SessionState True is en er een nieuwe sessie op het punt staat te worden aangemaakt, doorgaans wanneer een verzoek binnenkomt zonder geldige sessiecookie en AutoStartSession True is. Als de handler VHTTPSession op nil laat staan, maakt de server de sessie zelf aan.
Deze gebeurtenis is niet de aanbevolen manier om uw eigen sessieklasse te gebruiken. Wanneer u een instantie teruggeeft, voegt de server die alleen toe aan de sessielijst; er wordt geen sessie-ID aan toegekend. Een sessie die met een gewone constructor is gemaakt, heeft daarom een lege sessie-ID en een lege sessiecookie, en kan bij het volgende verzoek nooit meer worden teruggevonden. Gebruik in plaats daarvan SessionClass, dat uw afstammeling maakt en toch het unieke sessie-ID, de cookie en de timeout-afhandeling voor u genereert.
Roep ook SessionList.CreateUniqueSession niet aan binnen deze gebeurtenis. Die methode voegt de nieuwe sessie al toe aan de lijst, en de server voegt deze opnieuw toe wanneer de handler terugkeert, zodat dezelfde sessie tweemaal in de lijst terechtkomt. Zie Sessions voor het volledige beeld. Gebruik OnSessionStart om eenvoudigweg te reageren wanneer een sessie actief wordt.
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;