4

例如:网站说明:


  1. 两个超级管理员 SA1 SA2
  2. 当他们登录到管理员端时,更新按钮将出现在仪表板上。

需要


当SA1点击更新按钮需要15分钟才能完成任务,考虑在这个过程中,SA2登录他应该知道SA1已经点击了更新按钮,除非它完成,否则SA2不能点击它。


我做了什么


创建表 'button_status' [id, status('complete','incomplete')] 每当 SA1 或 SA2 单击更新按钮时,我将插入状态为'incomplete' 值的新记录,直到我显示正在进行的加载过程图像并禁用 SA1 和 SA2 的更新按钮,一旦进程在 10 分钟后完成,我将更新最后一条记录的状态以“完成”。并删除加载图像并启用更新按钮。
一切正常,问题是为未单击更新按钮的其他管理员加载图像或禁用按钮,我无法将其删除,因为我需要刷新页面。是否有任何方法可以在“完成”后不刷新页面的情况下为其他管理员自动显示已完成

4

1 回答 1

1

有三种方法可以直截了当。

阿贾克斯彗星

这涉及客户端-服务器实现,其中客户端响应服务器上的事件。更多关于AJAX Comet的信息。我使用的解决方案之一是流星服务器设置相对简单,但您需要访问服务器以您的方式配置它。不过已经停产了。

优点

  • 仅当有更改时才更新页面。从而减轻服务器的负载。
  • 很少或没有延迟

缺点

  • 服务器-客户端的配置
  • 耗时的实施

定时轮询

您可以定期轮询服务器一次以进行更改。您要求自定义脚本以 JSON 或 XML 格式返回锁定的记录。基于此,您可以使用 javascript 更新按钮状态。更深入地讨论了每 X 分钟/秒重新加载 AJAX 数据,jQuery

优点

  • 简单快速的实施

缺点

  • 在服务器上增加额外的负载
  • 仍有一些延迟

保持原样

如果那是管理界面并且单击已锁定记录的挫败感不是什么大不了的事,我会保持原样。

多一个

我为实时数据应用程序http://meteor.com/找到了有趣的解决方案,他们的SO 标签,但目前他们只有 mongodb 支持。

于 2013-06-12T07:56:52.370 回答