构建 Web 应用程序。
用户可以通过浏览器访问服务器上的共享资源主机,但是如果 UserA 已经在使用 Resource1,则在 UserA 释放 Resource1 或给定时间之前,Resource1 不应该对 UserB 可用。
对于这一部分:我选择使用带有元组列表(资源、当前用户)的 MySQL 表,并运行一个 cron 任务来删除过期的元组。
现在我希望能够通知 UserA UserB 想要访问 Resource1,如果 UserA 没有回答,那么 UserA 失去了对 Resource1 的锁定,然后资源对 UserB 可用。
对于这一部分,我想我必须使用 AJAX。我考虑过以下解决方案:
用户的浏览器定期进行 AJAX 调用(比如说每分钟)以证明他还活着,并且在调用时,如果另一个用户请求了相同的资源,他必须在给定的时间内挑战服务器请求(例如验证码)。如果挑战失败,则意味着用户不再在这里(可能他的浏览器一直处于打开状态或网页没有聚焦)。
棘手的部分是:“他必须在给定的时间内挑战服务器请求(例如验证码)”。怎么做?
我是否遵循最佳路径?