TsgcWebSocketHTTPServer › Olaylar › OnCreateSession
HTTP sunucusunun yeni bir oturum oluşturması gerektiğinde tetiklenir, böylece uygulama özel bir TIdHTTPSession örneği sağlayabilir.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession, SessionState True olduğunda ve yeni bir oturum oluşturulmak üzereyken, tipik olarak geçerli bir oturum çerezi olmadan bir istek geldiğinde ve AutoStartSession True olduğunda, temeldeki Indy HTTP sunucusu tarafından çağrılır. İşleyici VHTTPSession değerini nil olarak bırakırsa, oturumu sunucunun kendisi oluşturur.
Bu olay, kendi oturum sınıfınızı kullanmanın önerilen yolu değildir. Bir örnek döndürdüğünüzde, sunucu bunu yalnızca oturum listesine ekler; ona bir oturum kimliği atamaz. Bu nedenle düz bir yapıcı ile oluşturulan bir oturumun boş bir oturum kimliği ve boş bir oturum çerezi vardır ve bir sonraki istekte bir daha bulunamaz. Bunun yerine, alt sınıfınızı oluşturan ve yine de sizin için benzersiz oturum kimliğini, çerezi ve zaman aşımı işlemesini üreten SessionClass'ı kullanın.
Ayrıca, bu olayın içinde SessionList.CreateUniqueSession'ı çağırmayın. Bu yöntem yeni oturumu zaten listeye ekler ve işleyici döndüğünde sunucu onu tekrar ekler, bu nedenle aynı oturum listede iki kez sonuçlanır. Genel tabloyu görmek için Sessions'a bakın. Bir oturum etkin hale geldiğinde yalnızca tepki vermek için OnSessionStart'ı kullanın.
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;