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,则此属性不再适用,因为由您的列表决定创建哪个类。完整说明请参见 Sessions,并请注意 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;