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 forma recomendada de usar a 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 ID de sessão a ela. Uma sessão criada com um construtor simples tem, portanto, um ID de sessão vazio e um cookie de sessão vazio, e nunca mais poderá ser encontrada na próxima requisição. Use SessionClass em vez disso, que cria o seu descendente e ainda gera o ID de sessão ú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, portanto a mesma sessão acaba duas vezes na lista. Veja Sessões para o quadro completo. Use 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