TsgcWebSocketHTTPServer › Eventos › OnCreateSession
Se activa cuando el servidor HTTP necesita crear una nueva sesión para que la aplicación pueda proporcionar una instancia personalizada de TIdHTTPSession.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession lo llama el servidor HTTP de Indy subyacente cuando SessionState es True y se va a crear una nueva sesión, normalmente cuando llega una petición sin una cookie de sesión válida y AutoStartSession es True. Si el manejador deja VHTTPSession como nil, el servidor crea la sesión él mismo.
Este evento no es la forma recomendada de usar su propia clase de sesión. Cuando devuelve una instancia, el servidor se limita a añadirla a la lista de sesiones; no le asigna un ID de sesión. Por tanto, una sesión creada con un constructor simple tiene un ID de sesión vacío y una cookie de sesión vacía, y nunca podrá volver a encontrarse en la siguiente petición. Use SessionClass en su lugar, que crea su descendiente y sigue generando por usted el ID de sesión único, la cookie y la gestión del tiempo de espera.
Además, no llame a SessionList.CreateUniqueSession dentro de este evento. Ese método ya añade la nueva sesión a la lista, y el servidor la añade de nuevo cuando el manejador retorna, por lo que la misma sesión acaba dos veces en la lista. Consulte Sesiones para ver el panorama completo. Utilice OnSessionStart para simplemente reaccionar cuando una sesión pasa a estar activa.
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;