永远运行节点脚本

时间:2016-08-02 01:22:37

标签: node.js redis

我正在写一个等待消息的应用,然后会做一些动作。消息通过Redis频道接收。所以,我需要nodejs脚本无限运行(据我所知)

如何在不启动节点服务器的情况下运行它(我觉得启动服务器执行这么简单的任务是错误的。)

代码:

const redis = require("redis")
const subscriber = redis.createClient()
const http = require('http');

const hostname = '127.0.0.1';
const port = 3002;

subscriber.on("message", (channel, message) => {
  console.log(Buffer.from(message, 'base64'));
})

subscriber.subscribe('test')

// Server code, which i was using to start infinity loop
//
// const server = http.createServer((req, res) => {
//   res.statusCode = 200;
//   res.setHeader('Content-Type', 'text/plain');
//   res.end('Hello World\n');
// });
//
// server.listen(port, hostname, () => {
//   console.log(`Server running at http://${hostname}:${port}/`);
// });

1 个答案:

答案 0 :(得分:0)

<强> subscriber.js

const redis = require("redis");
const subscriber = redis.createClient();
const hostname = '127.0.0.1';
const port = 6379;
subscriber.on("message", function(channel, message) {
    console.log(message);
});
subscriber.subscribe('test');

<强> publisher.js

const redis = require("redis");
const publisher = redis.createClient();
const hostname = '127.0.0.1';
const port = 6379;

publisher.publish('test',"Hello I am Here !!!");

这是发布者和订阅者的示例代码。不需要运行HTTP服务器来从redis订阅。你只想继续运行subscriber.js。

如果此频道在特定日期处于非活动状态,则频道会进入睡眠状态。所有其他消息都可能丢失。

如果您想避免这种情况,您需要运行一个调度程序脚本,以便在特定日期(可能每天一次)向您的频道发布虚拟消息

您可以使用 forever npm module 连续运行您的节点。