在ASP中检测客户端丢失的最佳实践.. NET web应用程序



这不是一个具体的编码问题,而是给一个有多年电信软件开发经验的web应用新手的最佳实践建议。

我有ASP。. NET web应用程序,从几个嵌入式(Arduino)设备收集数据。设备通过简单的HTTP GET请求周期性地推送数据。正常情况下,每台设备每30秒推送一次数据。但是,设备可能会丢失,或者从设备到服务器的连接可能会丢失。我需要在2-3个正常的数据报告周期内检测到这种情况。

如果它是一个典型的独立c#应用程序,我会在每次从设备接收到过期设置为最大超时时间的数据时启动计时器。如果计时器过期,这意味着我已经很久没有收到设备的消息了,我需要从我的应用程序触发一个警报(电子邮件或其他东西)。

因此,对于具有非持久连接的独立始终在线应用程序,非活动计时器方法似乎非常典型。但是在ASP中正确的方法是什么呢?. NET web应用程序?我可以在HTTP请求处理程序之外运行这种计时器吗?

我搜索了可能的解决方案,人们似乎有更多关于超时浏览器会话等问题。我的问题在以下几个方面有所不同:

  1. 我有一个非常轻量级的客户端,无法进行会话状态跟踪
  2. 我需要及时检测到不活动,以提醒/报警用户,用户在出现报警之前不与系统交互

谢谢你的智慧分享

我的建议是,如果您正在使用get向服务器添加数据,请切换到post。其次,尝试使用某种令牌。用户发出的第一个请求(get请求)应该是指向可以获得访问令牌的端点。然后,每次它们通过post连接以推送数据时,从报头中获取访问令牌。检查令牌是否已过期。如果是好的,处理它们的请求并使用新的访问令牌进行响应。如果访问令牌已经过期,让他们去端点获取一个新的访问令牌。

对于访问令牌,您可以将其设置为在特定时间后过期。你可以这样做:

var timeDiff = DateTime.UtcNow - AccessToken.DateTime;
if (timeDiff.Minutes > 3)  // expired
else                       // still good

这是你应该做的事情,尽管获得访问令牌需要更多的代码。

编辑

javascript有一个interval指令,它可以在一个单独的线程上循环并延迟一段时间。您可以让它运行检查访问令牌,看看它是否即将过期。当距离过期还有一分钟(或其他时间)时,提示用户。最好还是在服务器端也有一些东西

相关内容

  • 没有找到相关文章

最新更新