在 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

我的问题有两个:

  1. 我的数据可能最终成为 null 的任何原因?
  2. 有没有办法获取发送消息的频道的全名?由于我正在监听模式 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