在Django中使用node.js进行基于事件的更新?

我不是在寻找某人来编写答案,但是我想知道是否有人可以简单地给出一个关于如何使用Django和node.js来获得即时的,事件驱动的更新的总体概述。

我有一个“新闻饲料”的种类,我想这个饲料更新时,新的项目进来。我有的一般想法是打开一个连接到节点服务器通过javascript,让节点服务器“睡眠“直到一个新的项目进入,在这一点上它返回的数据和Django方面开始另一个连接。

当谈到实际编写node.js代码时,我的困惑就来了 – 文档显示了很多信息,但不知道如何使用这些信息。 我会很感激,如果有人可以指示我在哪里寻找这个 – 我使用的东西像一个EventEmitter ? 我怎样才能有一个Django端脚本要求节点服务器只侦听有关特定用户的事件?

提前致谢!

       

网上收集的解决方案 "在Django中使用node.js进行基于事件的更新?"

没关系,我想我明白了。 我创build了自己的发射器,并且监听了我自己的事件。

 var myemitter = new events.EventEmitter(); 

而当Django的请求进来时,

 myemitter.addListener('action'+userid,function(data){ //do something with data } 

该请求将通过JavaScript进行$.ajax()调用,基本上会持续很长时间的轮询并等待发生。 当服务器发生什么事,即用户做了什么,服务器会发布到节点。 请求将导致事件被发射:

 myemitter.emit('action'+userid,data); 

…导致来自第二个代码段的callback函数被调用。 然后它find与该请求关联的响应对象,返回信息,并由Django端脚本parsing。

希望这可以帮助别人,以为我只是张贴我的答案。

如果编写node.js代码让你感到不舒服,那么应该看看专门为支持长时间运行的HTTP请求而构build的基于Python的服务器。

龙卷风是其中之一,你可以在里面运行Django(例如http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/ )。 它的CPU /内存使用可能不如node.js,但绝对值得一看!