TsgcWebSocketHTTPServerZdarzenia › OnCreateSession

OnCreateSession Zdarzenie

Wywoływane, gdy serwer HTTP musi utworzyć nową sesję, aby aplikacja mogła dostarczyć własną instancję TIdHTTPSession.

Składnia

property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object

Wartość domyślna

Uwagi

OnCreateSession jest wywoływane przez bazowy serwer HTTP Indy, gdy SessionState ma wartość True i ma zostać utworzona nowa sesja, zazwyczaj gdy żądanie przychodzi bez prawidłowego pliku cookie sesji, a AutoStartSession ma wartość True. Jeśli procedura obsługi pozostawi VHTTPSession jako nil, serwer tworzy sesję samodzielnie.

To zdarzenie nie jest zalecanym sposobem użycia własnej klasy sesji. Gdy zwracasz instancję, serwer jedynie dodaje ją do listy sesji; nie przypisuje jej identyfikatora sesji. Sesja utworzona za pomocą zwykłego konstruktora ma zatem pusty identyfikator sesji oraz pusty plik cookie sesji i nigdy nie da się jej ponownie odnaleźć przy następnym żądaniu. Zamiast tego użyj SessionClass, które tworzy Twoją klasę potomną i nadal generuje za Ciebie unikalny identyfikator sesji, plik cookie 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 zakończy działanie, więc ta sama sesja trafia na listę dwukrotnie. Zobacz Sesje serwera HTTP, aby poznać pełny obraz. Użyj OnSessionStart, aby po prostu reagować, gdy sesja staje się aktywna.

Przykład


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;

Powrót do Zdarzeń