对不使用onunload离开网站的用户进行计费

时间:2017-10-03 14:25:20

标签: asp.net-mvc web-services cookies design-patterns

我有一个资源非常有限的网络服务(我将能够处理大约3个并发用户)。

当用户与我的网站进行交互时,他们会启动一个复杂的流程服务器端。 (这个过程是限制因素,因为我的服务器机器将无法并行处理多个,并且客户端无法在他们这边运行它。)

我的问题是如何确保为离开的用户结束流程,例如关闭窗口。

我已经考虑了 onunload onbeforeunload ,但它们也是由网站内的链接触发的(我需要用户才能与流程进行交互)所以这似乎不是一种选择。

根据其他问题(例如see this),这种方法似乎有问题,但是如果在执行onunload触发的操作时有一种方法可以检查用户是否仍然是活动用户(甚至如果在网站的不同页面),但我不知道该怎么做。

我还考虑过定期检查活动用户列表并取消已经离开的用户的流程,但我不知道这是否可行。

我对cookie没有经验,但是这可能是一个使用它们的地方吗?服务器是否可以访问断开连接的用户的(仍然存在的)cookie?

这听起来像是解决这个问题的合理方法吗?

1 个答案:

答案 0 :(得分:1)

这些病例通常由心跳处理。让您的客户端向服务器发送定期心跳(基本上是ping),通知它仍处于活动状态,并对进程的结果感兴趣。并且服务器会自动杀死那些在一段配置的时间内没有收到客户端心跳的进程。

  

我考虑过onunload和onbeforeunload

你是对的 - 你不能依赖它们。

  

我对cookie没有任何经验,但这可能是一个使用它的地方吗?

没有。 Cookie维护在HTTP调用时发送到服务器的客户端状态。因此,服务器无法管理cookie。相反,他们只看着它们来识别状态。