我已经在思考一个解决方案,但由于我以前没有做过这样的事情,所以在实施之前我想检查一下SO的想法。基本上,我需要修改一个现有的基于Web的应用程序,该应用程序有大约20个用户,以添加推送通知为目的。重要的是,用户同时收到通知(PC-A不应在PC-B之前20秒收到警报)。目前,系统依靠AJAX请求工作,每20秒向服务器发送请求并请求任何更新,并重新构建数据表中的所有数据(即使数据没有更改)。这似乎非常笨拙,因此我想出了两种方法。
1.不要从服务器-客户端中断连接。我正在考虑的这个想法涉及保持服务器和客户端之间的连接始终处于活动状态。带宽对于任何解决方案来说都不是真正的问题,因为这是仅供约20人使用的内部网络。通过这种解决方案,服务器可以在更新时向客户端推送Javascript,并相应地修改数据表。同样,每个连接的PC接收更新尽可能接近的时间非常重要。主要缺点是我的经验,我以前从未做过这件事,所以我不确定它是否能够很好地工作或者它是否通常是个坏主意。
2.继续使用AJAX请求,但仅在间隔中响应。我想到的第二种解决方案是允许客户端像往常一样进行AJAX请求(当前每20秒),但是使服务器只在30秒间隔内响应(例如2:00:00和2:00:30,无论这段时间内收到多少个AJAX请求)。这将需要调整AJAX请求的超时时间以防止请求超时,但在理论上听起来还不错,至少对我来说是这样。
这仅适用于内部网络,因此带宽不是主要问题,更重要的是尽可能接近地接收通知。我可以接受其他想法,这些只是我目前想到的两种方法。
编辑:主要寻找每种方法的优缺点。DashK有另一个有趣的方法,但我想知道是否有人有这些方法的经验,并且可以证明每种方法的优点和缺点,或者可能是另一种方法。
1.不要从服务器-客户端中断连接。我正在考虑的这个想法涉及保持服务器和客户端之间的连接始终处于活动状态。带宽对于任何解决方案来说都不是真正的问题,因为这是仅供约20人使用的内部网络。通过这种解决方案,服务器可以在更新时向客户端推送Javascript,并相应地修改数据表。同样,每个连接的PC接收更新尽可能接近的时间非常重要。主要缺点是我的经验,我以前从未做过这件事,所以我不确定它是否能够很好地工作或者它是否通常是个坏主意。
2.继续使用AJAX请求,但仅在间隔中响应。我想到的第二种解决方案是允许客户端像往常一样进行AJAX请求(当前每20秒),但是使服务器只在30秒间隔内响应(例如2:00:00和2:00:30,无论这段时间内收到多少个AJAX请求)。这将需要调整AJAX请求的超时时间以防止请求超时,但在理论上听起来还不错,至少对我来说是这样。
这仅适用于内部网络,因此带宽不是主要问题,更重要的是尽可能接近地接收通知。我可以接受其他想法,这些只是我目前想到的两种方法。
编辑:主要寻找每种方法的优缺点。DashK有另一个有趣的方法,但我想知道是否有人有这些方法的经验,并且可以证明每种方法的优点和缺点,或者可能是另一种方法。