聊天应用程序的计时器功能

时间:2017-03-04 12:15:50

标签: asp.net timer chat

我实际上正在构建一个必须显示当前用户的聊天应用程序,我在db中有一个列'IsOnline',当用户登录或注销时,其值在1和0之间切换。我需要一个每15秒命中一次api的功能,以获得当前在线的最新用户。 由于我使用的实体框架不支持signalr和sql依赖,所以我决定采用这种方式。 我怎么能有一个在一个单独的线程中每15秒运行一次的方法,以便在用户进入会话时不干扰我的其他crud操作。

2 个答案:

答案 0 :(得分:1)

15秒后轮询不是一个好的解决方案,特别是如果您的呼叫是在DB上。考虑一下这种方法的延迟。我认为你需要寻找不同的方法,而不是在15秒后调用db。

如果要在线/离线检查,请在内存中保持状态,而不是在Db中保持状态(如果要保留在数据库中,则在1小时或2小时后保留)。

答案 1 :(得分:1)

将状态存储在内存中,例如memcached或redis。让客户每15秒发出一次请求。在线状态是暂时的,不需要存储在DB中。

由于您没有描述应用的架构,因此很难深入建议。

通常,存在通知的有效实施是棘手的。从架子上拿东西而不是开发自己的东西可能更容易。