javascript - 仅限内部应用程序的基于“Web”的推送通知

标签 javascript jquery ajax web-applications push-notification

我已经在考虑一个解决方案了,但是因为我还没有做过这样的事情,所以我想在实现之前检查一下 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 有另一种有趣的方法,但我想知道是否有人有使用这些方法中的任何一种的经验,并且可以证明每种方法或其他方法的优缺点。

最佳答案

如果我很了解您的需求,我认为您应该看看 Comet

Comet is a web application model in which a long-held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it. Comet is an umbrella term, encompassing multiple techniques for achieving this interaction. All these methods rely on features included by default in browsers, such as JavaScript, rather than on non-default plugins.

The Comet approach differs from the original model of the web, in which a browser requests a complete web page at a time.

关于javascript - 仅限内部应用程序的基于“Web”的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3764709/

相关文章:

javascript - Twitter 按钮在 IE8 中导致 JS 错误(预期标识符)

javascript - 在 RegExp 中使用带有转义字符的变量

javascript - 使用onkeyup javascript时如何停止和再次启动ajax提交表单?

javascript - 在 Javascript 中捕获格式错误的 XML

javascript - AJAX 页面重新加载

javascript - 如何使用Electron菜单执行angular 7导航

javascript - 返回值的数量 - REST API Angular

javascript - jQuery 中的错误( undefined variable )

javascript - 我可以在 javascript 中使用 form_dropdown 吗?

javascript - 使用突出显示插件匹配精确单词单个或多个单词