【发布时间】:2010-09-21 21:39:11
【问题描述】:
我已经在折腾解决方案了,但是因为在我想在实施之前检查 SO 的想法之前我还没有做过这样的事情。
基本上,我需要修改一个现有的基于 Web 的应用程序,该应用程序有大约 20 个用户来添加推送通知。重要的是用户同时收到通知(PC-A 不应在 PC-B 之前 20 秒收到警报)。目前系统处理 AJAX 请求,每 20 秒向服务器发送一次并请求任何更新并每次都完全重建数据表(即使数据没有更改)。这看起来真的很草率,所以我想出了两种方法。
不要断开与服务器-客户端的连接。 我正在折腾的这个想法涉及始终保持服务器和客户端之间的连接处于活动状态。带宽对于任何解决方案都不是真正的问题,因为这是在一个只有大约 20 人的内部网络中。使用此解决方案,服务器可以在有更新时将 Javascript 推送到客户端,并相应地修改数据表。同样,每台连接的 PC 尽可能同时接收更新非常重要。主要缺点是我的经验,我以前从未这样做过,所以我不确定它的效果如何,或者这通常是一个坏主意。
继续 AJAX 请求,但只响应间隔。我想到的第二种解决方案是允许客户端像往常一样发出 AJAX 请求(目前每 20秒),但让服务器仅以 30 秒的间隔响应(例如 2:00:00 和 2:00:30,无论它在该时间跨度内收到多少 AJAX 请求)。这将需要调整 AJAX 请求的超时以防止请求超时,但理论上听起来不错,至少对我来说是这样。
这仅适用于内部网络,因此带宽不是主要考虑因素,更重要的是,接收通知时要尽可能靠近对方。我对其他想法持开放态度,这只是我目前想到的两个。
编辑
主要是寻找每种方法的优缺点。 DashK 有另一种有趣的方法,但我想知道是否有人对这些方法有经验,并且可以证明每种方法的优缺点,或者可能是另一种方法。
【问题讨论】:
-
如果所有用户在同一时间接收到它是如此重要,那么您从服务器获得的消息可能包括它应该显示的时间——这将导致网络延迟并且只要用户机器的时钟是同步的。
-
正在使用哪个浏览器?
-
@Daniel 理想情况下至少 Firefox/Chrome/IE7
标签: javascript jquery ajax web-applications push-notification