【发布时间】:2017-10-03 14:25:19
【问题描述】:
我有一个资源非常有限的网络服务(我将能够同时处理大约 3 个用户)。
当用户与我的网站交互时,他们会在服务器端启动一个复杂的流程。 (这个过程是限制因素,因为我的服务器机器将无法并行处理许多,并且客户端无法在他们这边运行。)
我的问题是如何确保为离开的用户结束流程,例如关闭窗口。
我考虑过 onunload 和 onbeforeunload,但它们也由网站内的链接触发(我需要用户能够与流程进行交互)所以这似乎不是一个选择。
根据其他问题(例如see this),这种方法似乎有问题,但如果有办法在执行由 onunload 触发的操作时检查用户是否仍然是活动用户(即使在网站的不同页面),但我不知道该怎么做。
我也考虑过定期检查活跃用户列表并取消已离开用户的流程,但我不知道这是否可能。
我对 cookie 的经验为零,但这里可以使用它们吗?服务器能否访问断开连接用户的(仍然存在的)cookie?
这听起来像是解决这个问题的合理方法?
【问题讨论】:
-
一旦网页加载完毕,除非您使用 WebSockets 或某种轮询,否则无法判断用户是否在他们面前打开了该页面。但是看到服务器在资源上的限制可能是不合理的。我会把更多的精力放在使这些流程变得更高效上。比如,这些进程是否必须在该服务器上运行,与服务 Web 请求的服务器相同?也许网络服务器正在尝试做太多事情。
-
理想情况下,你是对的。但这是一个非常特殊的研究项目,恐怕我在这些方面几乎无能为力(缺乏获得我不会获得的资源或取得让我在研究界出名的突破;))。
标签: asp.net-mvc web-services cookies design-patterns