我們正在開發一個帶有Delphi XE的新Datasnap服務器(tcp/ip)並且遇到了問題。我們不知道客戶端何時以異常方式斷開連接,連接斷開或客戶端計算機重新啓動。Delphi XE斷開或終止datasnap客戶端會話
當客戶端建立我們保存它的細節列表作爲這樣的連接:
TClientInfo = record
Id: integer;
Session: TDSSession;
LastSeen: TDateTime;
end;
...
ClientInfoList: TDictionary<Integer, TClientInfo>;
...
//OnConnect
ClientInfo.ClientId := ClientId;
ClientInfo.Session := TDSSessionManager.GetThreadSession;
ClientInfo.LastSeen := Now();
ClientInfoList.Add(ClientId, ClientInfo);
理想的情況下,我們會想重複throught的ClientInforList並斷開尚未看到30分鐘的任何客戶端,但這是我遇到問題的地方。
我試圖斷開或終止客戶端會話,如下沒有任何運氣。
for i in ServerContainer.ClientInfoList.Keys do
begin
ClientInfo := TClientInfo(ServerContainer.ClientInfoList[i]);
ClientInfo.Session.Terminate;
end;
在Delphi XE中有這樣做的方法嗎?
'ServerClass.LifeCycle'如何設置? ['Server','Session','Invocation'] –
LifeCycle設置爲[Session]。 –