【发布时间】:2011-12-01 18:57:34
【问题描述】:
我正在考虑构建一些使用 websocket 的 Intranet 应用程序。我目前在服务器上为我的 Web 框架使用 Python/Pylons,并进行轮询以更新页面 DOM 中的项目。 Pylons 不太适合与 websockets(恕我直言)进行通信,因为它每个连接都使用一个线程。我正在考虑使用 node.js 作为服务器来与来自我的 Web 应用程序的 websocket 连接进行通信。这是我的应用程序的“10,000 英尺视图”:
- Pylons 提供 Web 内容(html、css、图像、javascript 等)
- 页面应用程序上的 JavasSript 向 node.js 服务器打开 websocket
- node.js服务器通过websocket向应用推送数据
- JavaScript 根据来自 websocket 的数据更新页面 DOM 元素
上面案例中的数据来自一个 MySQL 数据库,这就是我的问题的来源。我之前设置过 MVC 类型的应用程序,并且可以在 node.js 中做同样的事情。但是,如果我有一个向 node.js 服务器开放的长期 websocket,那么 node.js 如何知道模型中的更改并将它们推送到应用程序?例如,如果我想更新 web 应用程序页面上显示的总数,并且这些总数由于 node.js(其他 web 应用程序)之外的系统中的操作而发生变化,node.js 如何通知这些更改?想到的是让 node.js 轮询数据库以获取各种更改并将更改传播到各种视图。但对我来说,这听起来就像我正在将我的轮询从 Web 应用程序转移到 node.js 服务器?
有人对此有任何想法、建议或指示吗?
提前致谢! 道格
【问题讨论】:
-
为什么 pylons 应用不能通知 node.js?
-
可以,这就是我现在正在做的事情。 JavaScript 使用 AJAX/JSON 轮询 Pylons 应用程序以获取数据。但是,此方法通常会轮询未更改的数据。另外,我的应用在不同用户浏览器上运行的所有“实例”都在轮询数据。
标签: javascript model-view-controller node.js websocket pylons