【发布时间】:2014-08-20 12:25:46
【问题描述】:
我目前正在开发一个由 Django/apache 提供的 HTML5 网络应用程序。
该应用程序的目标是监控几个设备:所有客户端逻辑都是用 Angular 编写的,所有数据都来自对后端进行的基于 JSON 的类似 REST 的调用(我认为这很常见)。
到目前为止,这工作得很好。现在我想实现一个通知系统:可以对外部事件做出反应并通知所有正在运行的 web 应用程序实例需要在页面上刷新的东西。我真的不希望所有实例都只轮询服务器,因为这似乎不是最理想的。尤其是在移动设备上,这可能会很快耗尽电池。
我对这类东西的经验很少(我更多的是后端开发人员,所以这对我来说都是全新的)。我首先想到的是从 Javascript 端向服务器发出一个长期存在的 HTTP 请求:这个请求只会在超时期限之后给出结果(在这种情况下,客户端必须立即重试并再次等待)或在发生更改后(然后它会回复一些有关需要刷新的模型的信息)。
这在理论上似乎可行,但我想我宁愿先问,因为它看起来很常见,如果不存在此类任务的框架,我会感到惊讶。
所以我的问题是:在这种情况下是否有事实上的标准/技术可以使用和/或你会建议什么来实施它?
服务器在我拥有完全控制权的虚拟机中运行:这意味着我可以安装实现该功能所需的任何软件。我想尽可能避免使用多个网络端口,但如果它使事情变得更容易,那就没问题了。
【问题讨论】:
-
看看websockets,它们可以用于实时事件而无需使用轮询。至于框架,我还没有看到任何与 django 集成的好框架。 JS 开发者现在似乎只关心 NodeJS。
标签: javascript django html angularjs notifications