如何从Redispopup对象,因为它们是实时添加的?
我想要一个Node.js进程运行,因为它检查Redis服务器是否有新的popup窗口。
另一个进程将会偶尔进行,Node进程将试图popup进来的任何东西.Node进程将保持运行。
任何人都可以指出一个好的方向吗?
我想弄清楚如何听这样的事件。 当然,我可以popup一次,但是如何让Node进程继续监听Redis服务器的任何添加?
您需要使用阻止popup窗口: http : //redis.io/commands/brpop
function waitForPush () { client.brpop(['list','otherlist',0], function (listName, item) { // do stuff waitForPush(); }); }
这似乎是pub / sub的一个很好的用例: http : //redis.io/topics/pubsub
您的Node.js进程偶尔会推送到Redis,也可以在每次推送某个内容时发布到某个通道。 喜欢这个:
var pushClient = redis.createClient(); //push something onto Redis pushClient.publish("pubsub-channel", "Just pushed something onto Redis");
那么你的另一个进程就会订阅那个频道。 每次消息事件被触发,你都会popup刚刚被推送的消息:
var client = redis.createClient(); client.subscribe("pubsub-channel"); client.on("message", function(channel, message){ //pop off new item });
如何使用process.nextTick(…)recursion函数的修改版本
function waitForPush () { client.brpop(['list','otherlist',0], function (listName, item) { // do stuff process.nextTick(waitForPush); }); }