TsgcWebSocketHTTPServer › Événements › OnCreateSession
Se déclenche lorsque le serveur HTTP a besoin de créer une nouvelle session afin que l'application puisse fournir une instance TIdHTTPSession personnalisée.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession est appelé par le serveur HTTP Indy sous-jacent lorsque SessionState est True et qu'une nouvelle session est sur le point d'être créée, généralement lorsqu'une requête arrive sans cookie de session valide et que AutoStartSession est True. Si le gestionnaire laisse VHTTPSession à nil, le serveur crée lui-même la session.
Cet événement n'est pas la manière recommandée d'utiliser votre propre classe de session. Lorsque vous renvoyez une instance, le serveur se contente de l'ajouter à la liste des sessions ; il ne lui attribue pas d'ID de session. Une session créée avec un constructeur ordinaire a donc un ID de session vide et un cookie de session vide, et elle ne peut jamais être retrouvée lors de la requête suivante. Utilisez plutôt SessionClass, qui crée votre descendant et génère toujours pour vous l'ID de session unique, le cookie et la gestion du délai d'expiration.
De plus, n'appelez pas SessionList.CreateUniqueSession à l'intérieur de cet événement. Cette méthode ajoute déjà la nouvelle session à la liste, et le serveur l'ajoute de nouveau lorsque le gestionnaire se termine, de sorte que la même session se retrouve deux fois dans la liste. Consultez Sessions pour une vue d'ensemble complète. Utilisez OnSessionStart pour simplement réagir lorsqu'une session devient active.
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;