Asp.net mvc 对未使用onunload而离开网站的用户进行计费

Asp.net mvc 对未使用onunload而离开网站的用户进行计费,asp.net-mvc,web-services,cookies,design-patterns,Asp.net Mvc,Web Services,Cookies,Design Patterns,我有一个资源非常有限的Web服务(我将能够同时处理大约3个用户) 当用户与我的网站交互时,他们会在服务器端启动一个复杂的过程。(此过程是一个限制因素,因为我的服务器无法并行处理多个,客户端无法在其一侧运行此过程。) 我的问题是如何确保为离开的用户结束流程,例如关闭窗口 我考虑过onunload和onbeforeuload,但它们也是由网站内的链接触发的(我需要用户能够与流程交互),因此这似乎不是一个选项 根据其他问题(例如),这种方法似乎有问题,但如果有一种方法可以检查用户在执行onunload

我有一个资源非常有限的Web服务(我将能够同时处理大约3个用户)

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

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

我考虑过onunloadonbeforeuload,但它们也是由网站内的链接触发的(我需要用户能够与流程交互),因此这似乎不是一个选项

根据其他问题(例如),这种方法似乎有问题,但如果有一种方法可以检查用户在执行onunload触发的操作时是否仍然是活动用户(即使在网站的另一个页面中),它可能会起作用,但我不知道如何做到这一点

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

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


对于这个问题,哪种方法听起来是合理的?

像这样的情况通常由心跳来处理。让您的客户机定期向服务器发送心跳(本质上是ping),通知服务器它仍然处于活动状态,并且对进程的结果感兴趣。服务器会自动终止那些在配置的时间内没有收到客户端心跳信号的进程

我在卸货之前已经考虑过onunload和ONONPRELOAD

你是对的,你不能依赖他们

我对饼干没有任何经验,但这是一个使用它们的地方吗


否。Cookie保持在HTTP调用时发送到服务器的客户端状态。因此,服务器不管理cookie。相反,他们只是查看它们以识别状态。

一旦加载了网页,就无法判断用户是否在他们面前打开了网页,除非您使用WebSocket或某种轮询。但是考虑到服务器在资源上的限制可能是不合理的。我会把更多的精力放在提高这些过程的效率上。比如,这些进程是否必须运行在该服务器上,即服务web请求的服务器上?也许网络服务器正在尝试做太多的事情。理想情况下,你是对的。但这是一个非常特殊的研究项目,我恐怕在这方面我做不了什么(除了获得我不会得到的资源或取得突破,使我在研究界成名之外)。是的,这听起来很有希望。我会检查心跳,谢谢!我当然会的;)我只需要一点时间来弄清楚这一点,但如果我能让它工作起来,我绝对会记得去做。我努力了一点,但我现在有心跳在工作:)谢谢你的贡献!