3

我目前正在使用在 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 服务器和相关内容非常熟悉)
  • 有一个很好的前景和未来(我真的很想学习一些我会经常使用并且我不必经常重新配置的东西)

感谢您的想法和任何形式的帮助(非常欢迎提供一些好的、最近更新的阅读材料的链接:)

4

1 回答 1

1

你应该看看django-socketio项目,这是一个 Django 应用程序,它提供了通过 Socket.IO 将 websockets 与 Django 一起使用所需的功能。

它使用gevent库和socket.io

于 2013-01-20T20:40:19.083 回答