我不是在寻找代表答案的人,但我想知道是否有人可以概述如何将Django与node.js一起使用以获得即时的,事件驱动的更新.
我有各种各样的"新闻提要",我希望在新项目进入时更新该Feed.我的一般想法是通过javascript打开与节点服务器的连接,让节点服务器"睡觉"直到有新项目进入,此时它返回数据并且Django端启动另一个连接.
当我真正编写node.js代码时,我的困惑就出现了 - 文档显示了很多信息,但没有显示如何使用这些信息.如果有人能指引我到哪里寻找这个,我会很感激 - 我会使用类似的东西EventEmitter吗?如何让Django端脚本请求节点服务器仅侦听有关特定用户的事件?
提前致谢!
没关系,我想我弄明白了.我创建了自己的发射器并让它听我自己的事件.
var myemitter = new events.EventEmitter();
Run Code Online (Sandbox Code Playgroud)
当来自Django的请求进来时,
myemitter.addListener('action'+userid,function(data){
//do something with data
}
Run Code Online (Sandbox Code Playgroud)
该请求将$.ajax()通过JavaScript 进行调用,该调用基本上会进行长时间轮询,并等到发生了某些事情.当服务器上发生某些事情,即用户做了某事时,服务器将发布到节点.该请求将导致发出事件:
myemitter.emit('action'+userid,data);
Run Code Online (Sandbox Code Playgroud)
...导致第二个代码段的回调函数被调用.然后它找到与该请求关联的响应对象,返回信息,并由Django端脚本解析.
希望这有助于某人,我想我会发布我的答案.
小智 2
如果您对编写 Node.js 代码感到不舒服,您应该看看专门为支持长时间运行的 HTTP 请求而构建的基于 Python 的服务器。
Tornado 就是其中之一,您可以在其中运行 Django(例如 http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/)。它的 CPU/内存使用率可能不如 Node.js 那么出色,但绝对值得一看!
| 归档时间: |
|
| 查看次数: |
2342 次 |
| 最近记录: |