UniGUI Session管理說明

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;

相关推荐
一瓢西湖水4 小时前
列式数据库-以clickHouse为例
数据库·clickhouse
Elastic 中国社区官方博客4 小时前
使用 Elastic Cloud Serverless 扩展批量索引
大数据·运维·数据库·elasticsearch·搜索引擎·云原生·serverless
liulanba4 小时前
AI Agent技术完整指南 第一部分:基础理论
数据库·人工智能·oracle
逆天小北鼻5 小时前
Oracle 服务端与客户端的核心区分要点
数据库·oracle
2501_946242935 小时前
MPV-EASY Player (MPV播放器) v0.41.0.1
数据库·经验分享·云计算·计算机外设·github·电脑·csdn开发云
MySQL实战6 小时前
Redis 7.0 新特性之maxmemory-clients:限制客户端内存总使用量
数据库·redis
VX:Fegn08956 小时前
计算机毕业设计|基于springboot + vue校园社团管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·课程设计
北亚数据恢复7 小时前
虚拟机数据恢复—ESXi虚拟机下SqlServer数据库数据恢复案例
数据库
susu10830189117 小时前
使用navicat创建事件event报错You have an error in your SQL syntax
数据库·sql
水力魔方7 小时前
武理排水管网模拟分析系统应用专题5:模型克隆与并行计算
数据库·c++·算法·swmm