TsgcWebSocketHTTPServer › Właściwości › SessionClass
Klasa używana przez serwer do tworzenia nowych sesji HTTP; ustaw ją na własnego potomka TIdHTTPSession, aby przechowywać własne dane w każdej sesji.
property SessionClass: TsgcIdHTTPSessionClass read GetSessionClass write SetSessionClass;
// TsgcIdHTTPSessionClass = class of TIdHTTPSession
TIdHTTPSession
Domyślnie serwer tworzy zwykłe obiekty TIdHTTPSession. Ustaw SessionClass na potomka klasy TIdHTTPSession, a serwer utworzy zamiast tego tę klasę, dla każdej sesji, w tym dla tych tworzonych automatycznie, gdy włączone jest AutoStartSession. Unikalny identyfikator sesji, plik cookie sesji, SessionTimeOut oraz usuwanie nieaktualnych sesji działają dokładnie tak jak wcześniej.
Nadpisz wirtualny konstruktor CreateInitialized w swojej klasie potomnej, jeśli chcesz zainicjować własne pola przy tworzeniu sesji. Odczytaj sesję z ARequestInfo.Session i rzutuj ją na swoją klasę.
SessionClass musi być ustawione przed aktywacją serwera i nie może mieć wartości nil. Jeśli przypiszesz własną SessionList, ta właściwość przestaje obowiązywać, ponieważ to Twoja lista decyduje, jaką klasę utworzyć. Pełne wyjaśnienie znajdziesz w Sessions, i zauważ, że zdarzenie OnCreateSession nie jest zalecanym sposobem zmiany klasy sesji.
type
TMySession = class(TIdHTTPSession)
private
FUserName: String;
public
property UserName: String read FUserName write FUserName;
end;
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SessionState := true;
oServer.SessionTimeout := 600000;
oServer.SessionClass := TMySession;
oServer.Active := true;