我目前正在使用在 Apache (mod_wsgi) 上提供的 Django 来开发我的应用程序。我最喜欢的事情之一是使用 JavaScript 的setInterval()
函数和 AJAX 来“伪造”异步请求以从数据库中检索新数据。例如:
// javascript
function someFunction() {
// do some stuff
setInterval(function() { fetchNewStuff() }, 1000); // run fetchNewStuff() every second
}
function fetchNewStuff() {
Dajaxice.main.fetch_new_stuff(fetch_new_stuff_callback, {'id':$(this).attr('user_id')});
}
function fetch_new_stuff_callback(data){
// append new stuff to my table, list or whatever in HTML page
}
据我所知,这完全可以满足我的需求。然而,随着我的应用程序变得越来越大、越来越复杂,无论我如何尽量减少传输的数据,这最终都会对我的服务器和我的客户端来说变得太麻烦。此外,我无法接受在当今世界我仍然在“伪造”这个 :) 所以,我想为我当前和未来的项目找到一些具有推送功能的“真实”解决方案。
我确实尝试用谷歌搜索我的问题,我发现了很多有趣的东西(Tornado、Nginx、Node.js、Twisted 等),但大多数教程/文章/博客至少有 6 个月的历史,我相信很多事情都发生了变化那时。到目前为止,我已经尝试测试 Tornado 并且测试成功,但是在我的生产服务器上设置它时遇到了一些问题。我还尝试了 Node.js,它非常简单,因为我非常了解 JavaScript,但话又说回来,我不确定它是否是一个好的解决方案。
我的问题是 - 根据这些条件,在我当前和未来的应用程序中实现的最佳事物(服务器、平台、框架等)是什么:
- 易于使用(例如 Node.js 可以在这里使用)
- 尽可能消除第 3 方的东西(一些开箱即用的解决方案,例如 Django+Websockets 就是这样[这真的只是一个愚蠢的例子])
- 与 Django 一起使用的良好文档(最好有一些关于我的新技术和 Django 的真实示例,因为我对 Web 服务器和相关内容非常熟悉)
- 有一个很好的前景和未来(我真的很想学习一些我会经常使用并且我不必经常重新配置的东西)
感谢您的想法和任何形式的帮助(非常欢迎提供一些好的、最近更新的阅读材料的链接:)