TsgcWebSocketHTTPServer › 属性 › SessionClass
服务器用于创建新 HTTP 会话的类;将其设置为您自己的 TIdHTTPSession 子类,以在每个会话中存储自定义数据。
property SessionClass: TsgcIdHTTPSessionClass read GetSessionClass write SetSessionClass;
// TsgcIdHTTPSessionClass = class of TIdHTTPSession
TIdHTTPSession
默认情况下,服务器会创建普通的 TIdHTTPSession 对象。将 SessionClass 设置为 TIdHTTPSession 的子类,服务器将改为为每个会话创建该类,包括在启用 AutoStartSession 时自动创建的会话。唯一的会话 ID、会话 Cookie、SessionTimeOut 以及过期会话的移除都将与之前完全相同地工作。
如果您希望在创建会话时初始化自己的字段,请在您的子类中重写虚构造函数 CreateInitialized。通过 ARequestInfo.Session 读回会话,并将其强制转换为您的类。
SessionClass 必须在服务器激活之前设置,并且不能为 nil。如果您分配自己的 SessionList,此属性将不再适用,因为由您的列表决定要创建哪个类。完整说明请参阅 会话,并请注意 OnCreateSession 事件不是更改会话类的推荐方式。
type
TMySession = class(TIdHTTPSession)
private
FUserName: String;
public
property UserName: String read FUserName write FUserName;
end;
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SessionState := true;
oServer.SessionTimeout := 600000;
oServer.SessionClass := TMySession;
oServer.Active := true;