2017-03-04 38 views
0

我實際上正在構建一個聊天應用程序,它必須顯示當前用戶,我有一個'IsOnline'的數據庫,其值在用戶登錄或註銷時在1和0之間切換。我需要一個每15秒打api的函數來獲取當前在線的最新用戶。 由於我使用不支持signalr和sql依賴項的實體框架,我決定採用這種方式。 我怎麼能有一個方法,每15秒在一個單獨的線程運行,以便不會干擾我的其他crud操作,只要我有用戶在會話中。聊天應用程序的計時器功能

回答

1

15秒後輪詢並不是一個好的解決方案,特別是如果您的電話是在數據庫上。考慮這種方法的延遲。我認爲你需要尋找不同的方法,而不是在15秒後調用db。

如果您想要在線/離線狀態下保持內存中的狀態,而不是堅持Db(如果您想保留在DB中,則持續1小時或2小時)。

+0

不同的方法?如果你在這裏指出我的方向,這將會有所幫助。 –

1

將狀態存儲在內存中,例如在memcached或redis中。讓客戶每15秒發出一次請求。在線狀態是暫時的,它不需要存儲在數據庫中。

由於您沒有描述應用程序的體系結構,因此很難深入提出建議。

一般來說,高效的呈現通知是非常棘手的。從架子上取下東西而不是開發自己的東西可能會更容易。