2009-09-29 67 views
3

我有一个小问题,因为我的WEB开发技能不是最急剧的,我希望你能帮助我。如何同步两个浏览器

问题是我正在开发一个数字SCRUM任务板,其中一个核心功能是打开相同项目任务板的浏览器必须显示相同的图片。因此,如果人员A移动任务人员B,他应该在他的浏览器中看到这一点,而不必手动刷新网页。

我知道高达毫秒的同步是不可能的,因为那样会杀死网络连接。但是每30秒一次就会很好。除非你可以推送消息。

项目移动的表示不是问题,因为我可以很容易地使其闪烁。 我需要浏览器服务器的帮助 - 通信。 B人的浏览器如何知道有什么变化。它是否真的像拥有一个计时器一样简单,并且会针对任何更改而单独查询JSON服务。还是有办法将更改推送到浏览器?

回答

10

你想看看Comet

Web开发,彗星是一个 新词来描述Web 应用模型,其中一个长期持有的 HTTP请求允许web服务器 推送数据到浏览器,而不 浏览器明确要求它。

这会让你得到你想要的即时响应。有几个JavasScript框架内置了对它的支持 - 你选择哪一个取决于你正在使用的内容,你对每一个的熟悉程度等等。Dojo是我之前使用过的,它工作得很好。

-1

是的,这是标准的AJAX实践 - A是'异步',这意味着您在后台启动XMLHttpRequest以检查状态,然后在必要时更新页面。

您无法'推送'到浏览器。

+0

http://ajaxian.com/archives/comet-a-new-approach-to-ajax-applications – Steerpike 2009-09-29 12:03:38

+0

您可以通过保持连接处于打开状态并保持活动状态来“推送”浏览器。当然有限制,但它确实可以让你有效地推送内容。 – davewasthere 2009-09-29 12:05:10

0

可以打开一个拉连接,它可以有效地将内容推送到浏览器,但轮询的想法是最简单的。

你的民意调查只需要看最后一次更新是什么时候,如果它比它所知道的更新更新,那么它可以下载整个更新。

保持简单。你不会犯太多错误。

+0

如果您想了解更多关于“推送”到浏览器的信息,请查看以下文章中的Long Polling。 http://en.wikipedia.org/wiki/Push_technology – davewasthere 2009-09-29 12:03:52

0

假设人员移动任务意味着更改反映在数据库中,您只需设置一个JavaScript时间间隔(setInterval(function,timeInMs))来轮询使用AJAX的后端脚本,该脚本将返回新的州。

4

有三种技术来实现这一目标:

  • 短轮询:浏览器发送Ajax请求每x秒,并立即得到响应
  • 长轮询:浏览器发送Ajax请求,并等待响应,同时不超时,则发送另一个请求
  • 闪光灯插座:使用Flash应用程序的持续性与服务器端应用程序
+0

如果你要建议闪存套接字,那么你可以添加Java/Silverlight的混合以及。 :-) – davewasthere 2009-09-29 12:07:36

+0

我无法将Silverlight添加到建议中,因为它在Linux平台中不受支持。 – Anatoliy 2009-12-09 08:42:19