在 Node.js 上获取 Redis 消息中的频道名称
Get channel name in Redis messages on Node.js
我在 Node.js 应用程序中将 Redis 用作 Pub/Sub 客户端。我将订户绑定到这样的频道模式:
client.psubscribe("events.*.new", (event) => console.log("NEW EVENT", event));
然后,我通过这种方式在特定频道上发送消息:
client.publish("events.123.new", '{"some": "data"}');
在我的终端中,我得到以下输出:
NEW EVENT null
我的问题有两个:
- 我的数据可能最终成为
null
的任何原因?
- 有没有办法获取发送消息的频道的全名?由于我正在监听模式
events.*.new
,因此我似乎无法知道消息是在通道 events.123.new
上还是在 events.456.new
上发送的。 在有效负载中传递此信息是在侦听器中访问它的唯一方法吗?
提前致谢!
试试这个:
client.psubscribe("events.*.new");
client.on('pmessage', function (pattern, channel, message) {
console.log(pattern, channel, message);
});
client.publish("events.123.new", '{"some": "data"}');
如果有错误,psubscribe 的回调只是 returns 第一个参数中的错误。您可以找到更多信息 here
我在 Node.js 应用程序中将 Redis 用作 Pub/Sub 客户端。我将订户绑定到这样的频道模式:
client.psubscribe("events.*.new", (event) => console.log("NEW EVENT", event));
然后,我通过这种方式在特定频道上发送消息:
client.publish("events.123.new", '{"some": "data"}');
在我的终端中,我得到以下输出:
NEW EVENT null
我的问题有两个:
- 我的数据可能最终成为
null
的任何原因? - 有没有办法获取发送消息的频道的全名?由于我正在监听模式
events.*.new
,因此我似乎无法知道消息是在通道events.123.new
上还是在events.456.new
上发送的。 在有效负载中传递此信息是在侦听器中访问它的唯一方法吗?
提前致谢!
试试这个:
client.psubscribe("events.*.new");
client.on('pmessage', function (pattern, channel, message) {
console.log(pattern, channel, message);
});
client.publish("events.123.new", '{"some": "data"}');
如果有错误,psubscribe 的回调只是 returns 第一个参数中的错误。您可以找到更多信息 here