TsgcWebSocketHTTPServer › Zdarzenia › OnCreateSession
Wywoływane, gdy serwer HTTP musi utworzyć nową sesję, aby aplikacja mogła dostarczyć własną instancję TIdHTTPSession.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession jest wywoływane przez bazowy serwer HTTP Indy, gdy SessionState ma wartość True i ma zostać utworzona nowa sesja, zwykle wtedy, gdy żądanie przychodzi bez prawidłowego ciasteczka sesji, a AutoStartSession ma wartość True. Jeśli procedura obsługi pozostawi VHTTPSession jako nil, serwer sam tworzy sesję.
To zdarzenie nie jest zalecanym sposobem użycia własnej klasy sesji. Gdy zwrócisz instancję, serwer jedynie dodaje ją do listy sesji; nie przypisuje jej identyfikatora sesji. Sesja utworzona zwykłym konstruktorem ma więc pusty identyfikator sesji i puste ciasteczko sesji i nigdy nie da się jej już odnaleźć przy kolejnym żądaniu. Użyj zamiast tego SessionClass, które tworzy twojego potomka i nadal generuje za ciebie unikalny identyfikator sesji, ciasteczko oraz obsługę limitu czasu.
Ponadto nie wywołuj SessionList.CreateUniqueSession wewnątrz tego zdarzenia. Ta metoda już dodaje nową sesję do listy, a serwer dodaje ją ponownie, gdy procedura obsługi zwróci sterowanie, więc ta sama sesja trafia na listę dwukrotnie. Pełny obraz znajdziesz w Sesje. Użyj OnSessionStart, aby po prostu zareagować, gdy sesja stanie się aktywna.
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;