TsgcWebSocketHTTPServerEvents › OnCreateSession

OnCreateSession Event

Dispara quando o servidor HTTP precisa criar uma nova sessão, para que a aplicação possa fornecer uma instância TIdHTTPSession personalizada.

Sintaxe

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

Valor Padrão

Observações

OnCreateSession é chamado pelo servidor HTTP Indy subjacente quando SessionState é True e uma nova sessão está prestes a ser criada, normalmente quando uma requisição chega sem um cookie de sessão válido e AutoStartSession é True. Se o manipulador deixar VHTTPSession como nil, o próprio servidor cria a sessão.

Este evento não é a maneira recomendada de utilizar sua própria classe de sessão. Quando você retorna uma instância, o servidor apenas a adiciona à lista de sessões; ele não atribui um session ID a ela. Uma sessão criada com um construtor comum tem, portanto, um session ID vazio e um cookie de sessão vazio, e nunca poderá ser encontrada novamente na próxima requisição. Utilize SessionClass em vez disso, que cria seu descendente e ainda gera o session ID único, o cookie e o tratamento de timeout para você.

Além disso, não chame SessionList.CreateUniqueSession dentro deste evento. Esse método já adiciona a nova sessão à lista, e o servidor a adiciona novamente quando o manipulador retorna, de modo que a mesma sessão acaba duas vezes na lista. Consulte Sessions para o quadro completo. Utilize OnSessionStart para simplesmente reagir quando uma sessão se torna ativa.

Exemplo


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;

Voltar para Eventos