我正在写一个等待消息的应用,然后会做一些动作。消息通过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}/`);
// });
答案 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 连续运行您的节点。