TsgcWebSocketHTTPServer › Events › OnCreateSession
HTTP 서버가 새 세션을 생성해야 할 때 발생하여 애플리케이션이 사용자 정의 TIdHTTPSession 인스턴스를 제공할 수 있습니다.
property OnCreateSession: TIdHTTPCreateSession;
// TIdHTTPCreateSession = procedure(ASender: TIdContext; var VHTTPSession: TIdHTTPSession) of object
—
OnCreateSession은 SessionState가 True이고 새 세션이 생성되려고 할 때(일반적으로 유효한 세션 쿠키 없이 요청이 도착하고 AutoStartSession이 True인 경우) 기본 Indy HTTP 서버에 의해 호출됩니다. 처리기가 VHTTPSession을 nil로 남겨두면 서버가 세션을 직접 생성합니다.
이 이벤트는 자체 세션 클래스를 사용하기 위한 권장 방법이 아닙니다. 인스턴스를 반환하면 서버는 이를 세션 목록에 추가하기만 할 뿐 세션 ID를 할당하지는 않습니다. 따라서 일반 생성자로 생성된 세션은 세션 ID와 세션 쿠키가 비어 있어 다음 요청에서 다시 찾을 수 없습니다. 대신 SessionClass를 사용하십시오. 이것은 자손을 생성하면서도 고유 세션 ID, 쿠키, 타임아웃 처리를 대신 생성해 줍니다.
또한 이 이벤트 내에서 SessionList.CreateUniqueSession을 호출하지 마십시오. 이 메서드는 이미 새 세션을 목록에 추가하며, 처리기가 반환될 때 서버가 이를 다시 추가하므로 동일한 세션이 목록에 두 번 들어가게 됩니다. 전체 내용은 Sessions를 참조하십시오. 세션이 활성화될 때 단순히 반응하려면 OnSessionStart를 사용하십시오.
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;