如何“订阅”一个事件,涟漪到客户端

问题描述:

我知道这里有类似提出的各种问题,所以我看了一些建议作为匹配的问题。但是,没有人能够解决我所面临的问题。基本上,我想知道是否有一种方法可以“订阅”客户端级别的事件,以便从控制器呈现一小部分页面。我知道我可以使用javascript setInterval()(与jquery ajax结合)来“轮询”控制器操作,以确定是否应该在页面上重新设置“新”。不过,我并不是一个非常喜欢投票的粉丝,尤其是当客户端浏览器无人看管并且无*询更改时。乘以可能浏览应用程序的潜在客户端计算机的数量,并通过此方法了解问题的严重程度。现在,事实上,这是我用来刷新某些(我的现有网站上的“阅读” - 很多!!)某些页面片段的方法。如何“订阅”一个事件,涟漪到客户端

但是,我想知道订阅“反向”事件并使控制器“知道”客户端浏览器及其订阅的任何事件以及控制器然后“推送”根据'需求必须'向客户提供更新。这是否发生在正常桌面事件场景之外?这个想法甚至可以扩展,或者它与我目前使用的方法相反,是相同的潜在瓶颈。

希望有一些有趣的方法可以用在这把双刃剑上。

服务器无法联系客户端。除了轮询之外,唯一的其他选项是在客户端和服务器之间建立一个开放的连接,服务器可以通过该连接流式传输信息。这比轮询资源消耗少。

您可以编写一个脚本来检测客户端浏览器上的操作,并在闲置几分钟后进入“睡眠”模式,在此期间它不进行轮询。

+0

+1实际上,我喜欢'睡眠'模式的想法。这可能会以更具可扩展性的方式理解这个概念。我不会将答案标记为'尚',因为我非常希望看到其他建议,但这有点解决了我的问题领域 - 即不必要的投票。 – 2010-08-30 13:40:28

+1

我目前正在寻找这个http://paulirish.com/2009/jquery-idletimer-plugin/作为检测'空闲时间'的方法。应该只能在指定的空闲时间有效期间 – 2010-08-30 14:00:07

从未尝试过,因为在我看来,保持长时间运行的连接是耗尽工作线程的好方法 - 但Comet似乎是您要查找的内容。

  1. 请注意others已建议围绕每个连接模型的线程ways
+0

+1以内才能够启动基于轮询的工作。是的,我读过彗星和html5(websockets)。也许这是一个潜在的方式fwd,如果更低的html版本照顾以及.. – 2010-08-30 13:41:44

+0

webSync(http://www.frozenmountain.com/websync/)看起来完全符合我的想法!会喜欢看到“*/便宜”的替代品。 – 2010-08-30 13:48:37