UniGui中如何监听Session的开始与结束

23 篇文章 13 订阅

UNIGui中的UniServerModule模块有一个SessionManager(TUNIGuiSessionManger类)的属性,通过 TUNIGuiSessionManger类的相关属性可以来监听web会话的开始与结束。

如:

UniServerModule.SessionManager.Sessions.OnSessionStart := OnSessionStart;
UniServerModule.SessionManager.Sessions.OnSessionEnd := OnSessionEnd;

procedure TFrmMon.OnSessionStart(Sender: TIdHTTPSession);
var
  RemoteIp,SessionID:string;
begin
   RemoteIP:= TUniGUISession(Sender).UniApplication.RemoteAddress;
   SessionID:= TUniGUISession(Sender).SessionID;
   //根据ip和会话编号进一步处理。
end;

procedure TFrmMon.OnSessionEnd(Sender: TIdHTTPSession);
var
  RemoteIp,SessionID:string;
begin
   RemoteIP:= TUniGUISession(Sender).UniApplication.RemoteAddress;
   SessionID:= TUniGUISession(Sender).SessionID;
  //根据ip和会话编号进一步处理。   
end;

下面是一个完整的代码单元:

unit ServerModule;

interface

uses
  SysUtils, System.IOUtils,uniGUIServer, uniGUIMainModule, uniGUIApplication,UIdCustomHTTPServer,System.Classes;

type
  TUniServerModule = class(TUniGUIServerModule)
    procedure UniGUIServerModuleCreate(Sender: TObject);
  private
    { Private declarations }
  procedure OnSessionStart(Sender: TIdHTTPSession);
  procedure OnSessionEnd(Sender: TIdHTTPSession);
  protected
    procedure FirstInit; override;
  public
    { Public declarations }
  end;

function UniServerModule: TUniServerModule;

implementation

{$R *.dfm}

uses
  UniGUIVars, Main;

function UniServerModule: TUniServerModule;
begin
  Result:=TUniServerModule(UniGUIServerInstance);
end;

procedure TUniServerModule.FirstInit;
begin
  InitServerModule(Self);

end;

procedure TUniServerModule.OnSessionEnd(Sender: TIdHTTPSession);
var
  ls :TStringList;
begin
   //
   ls := TStringList.Create;

   if TFile.Exists(UniServerModule.StartPath+'sys.log') then
   begin
     ls.LoadFromFile(UniServerModule.StartPath+'sys.log');
   end ;
   ls.Add('go exit');
   ls.SaveToFile(UniServerModule.StartPath+'sys.log');
   ls.Free;
end;

procedure TUniServerModule.OnSessionStart(Sender: TIdHTTPSession);
var
  ls :TStringList;
begin
   //
   ls := TStringList.Create;

   if TFile.Exists(UniServerModule.StartPath+'sys.log') then
   begin
     ls.LoadFromFile(UniServerModule.StartPath+'sys.log');
   end   ;
   ls.Add('go enter');
   ls.SaveToFile(UniServerModule.StartPath+'sys.log');
   ls.Free;
end;

procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject);
begin
  UniServerModule.SessionManager.Sessions.OnSessionStart := OnSessionStart;
  UniServerModule.SessionManager.Sessions.OnSessionEnd := OnSessionEnd;
end;

initialization
  RegisterServerModuleClass(TUniServerModule);
end.


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值