zoukankan      html  css  js  c++  java
  • 【转】UniGUI Session管理說明

    【转】UniGUI Session管理說明

     (2015-12-29 15:41:15)
      分类: uniGUI
    台中cmj朋友在uniGUI中文社区QQ群里发布的,转贴至此。

    UniGUI Session管理說明
    每一個Session對應一個UniMainModule,一個MainForm
    因此Session+UniMainModule就可以得到所有Session+使用者的資料
    以做管理之用  

    [UniServerModule]
     
      Public區定義
        UserList:TList; //登入Session List

      //事件
      procedure TUniServerModule.UniGUIServerModuleCreate(Sender: TObject);
       begin
         UserList:=UniServerModule.SessionManager.Sessions.SessionList;
       end;
    //---------------------------------------------------------------------------------
    [UniMainModule]

      Public //定義,由設計者自行決
        UserID:String;       //登入使用者ID
        LoginTime:TDateTime; //登入時間
        Msg:String;          //做Session間訊息傳遞

        BrowserType:String;  //Session之瀏覽器類別
        BrowserVersion:integer; //Session之瀏覽器版本
        OSType:String;
        IsMobile:Boolean;    //Session是否Mobile

        RType:Integer; //OnHandleRequest執行類別


      //事件,此處可處理Session間的訊息
      //只要使用者在瀏覽器有動作,會觸發本事件
      //UniGUI的Session接受其他Session的訊息,無法主動顯示,
      procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject;var Handled: Boolean);
      var Session:TUniGUISession;
          MF:TMainForm;
       begin
         Session:=TUniGUISession(ASession);
         MF:=TMainForm( Session.UniMainModule.MainForm ); //Session對應的MainForm
         case Self.RType of
          1:begin
              MF.UniLabel1.Caption:='TEST訊息'; //
              Session.ShowAlert('OK');
            end;
          2:begin
            end;
          3:begin
            end;
         end;
         Self.RType:=-1; //
       end;
    //---------------------------------------------------------------------------------
    [LoginForm]

     //事件,設定Session沒定義的資料
     procedure TLoginForm.BtnLoginClick(Sender: TObject);
     var ok:Boolean;
         C:TUniClientInfoRec; //uniGUIApplication.pas
         m:TuniMainModule;
      begin
        m:=UniMainModule; //
        //--處理可否登錄 Ok=True可登入
        m.UserID:=Self.EdUser.Text; //UserID在Session沒有,是自行加入
        C:=UniApplication.ClientInfoRec;
        m.SessionID:=UniSession.SessionID;
        m.LoginTime:=Now;

        m.BrowserType:=C.BrowserType;
        m.BrowserVersion:=C.BrowserVersion;
        m.OSType:=C.OSType;
        m.IsMobile:=UniSession.IsMobile;

        Ok:=True; //自行決定如此處理Ok
        //記錄登入使用者處理
        if Ok then
         begin
           ModalResult:=mrOK;  // Login is valid so proceed to MainForm ,執行段 Login form會Destory
         end;
      end;

    //---------------------------------------------------------------------------------
    [MainForm]

     //事件,列出Session一覽表
     procedure TMainForm.UniButton7Click(Sender: TObject);
     var i:integer;
         Session:TUniGUISession;
         m:TUniMainModule; //Session對應的UniMainModule
      begin
        Self.PageControl.ActivePageIndex:=0;
        Self.MLog.Clear;
        for i:=0 to UniServerModule.UserList.Count-1 do
         begin
           Session:= TUniGUISession( UniServerModule.UserList[i]);
           m:=TUniMainModule(Session.UniMainModule);
           Self.MLog.Lines.Add( Session.SessionId +','+
                                m.UserID +','+
                                FormatDateTime('yyyy.mm.dd-hh:nn:ss.zzz',LoginTime:TDateTime; )+','+
                                m.BrowserType+','+
                                inttostr(m.BrowserVersion)+','+
                                m.OSType+','+
                                inttostr(ord(m.IsMobile))
                            );
         end;
      end;
  • 相关阅读:
    哪种可以让程序员赚到更多钱?
    layer 弹框 很好用 页面交互不好弄!!!父子弹框的交互!
    博客导航
    扯淡扯着扯着就远了----关键字;宁静致远
    高驰涛——裸奔到北京的程序猿
    TP5分页类使用——超级简单好用
    七牛云同步资源工具使用说明
    短链接实现原理和简单调用
    抓包工具Charles下载地址及Charles配置https
    敲代码的少年
  • 原文地址:https://www.cnblogs.com/westsoft/p/10329206.html
Copyright © 2011-2022 走看看