2016-03-04 121 views
1

在ServiceStack應用程序有沒有辦法來確定客戶端已經斷開非正常?我想獲取在線用戶列表,但ServiceStack非正常客戶端斷開

var sessionPattern = IdUtils.CreateUrn<IAuthSession>(""); 
var sessionKeys = Cache.GetKeysStartingWith(sessionPattern).ToList(); 
var activeSessions = Cache.GetAll<IAuthSession>(sessionKeys).Values; 

只會得到有效會話,直到到期或客戶端註銷(這並不反映他是否是onlline與否)是有效的。

回答

1

如果你指的是服務器事件訂閱,他們的壽命是完全無關的用戶會話。服務器事件訂閱僅表示與服務器事件/事件流的長期HTTP連接,該連接可能來自或可能不來自經過身份驗證的用戶。

的方法,找出active connected users is to call /event-subscribers

裏面ServiceStack,對服務器事件訂閱提供的所有信息是accessible through the IServerEvents依賴,例如要找出用戶的所有活動訂閱,您可以調用GetSubscriptionInfosByUserId()

+0

'ServerEvents.GetAllSubscriptionsDetails();'仍然無法獲取訂閱已斷開連接的客戶端 – HardLuck

+0

@HardLuck它會自動刪除。 – mythz

+0

是的,但我一直在尋找一種方式來刷新服務器的情況下,在訂閱列表時,客戶端沒有通知他的斷線 – HardLuck