在Node.js上的Redis消息中获取频道名称

时间:2018-07-19 16:16:09

标签: node.js redis publish-subscribe

我将Redis用作Node.js应用程序中的发布/订阅客户端。我将订户绑定到这样的频道模式:

client.psubscribe("events.*.new", (event) => console.log("NEW EVENT", event));

然后,我以这种方式在特定频道上发送一条消息:

client.publish("events.123.new", '{"some": "data"}');

在我的终端中,得到以下输出:

NEW EVENT null

我的问题是2倍:

  1. 为什么我的数据最终可能是null
  2. 是否可以访问通过其发送消息的通道的全名?由于我正在监听模式events.*.new,因此似乎无法知道消息是在通道events.123.new还是在events.456.new上发送的。 是在有效载荷中内部传递此信息的唯一途径吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试一下:

client.psubscribe("events.*.new");

client.on('pmessage', function (pattern, channel, message) {
    console.log(pattern, channel, message);
});

client.publish("events.123.new", '{"some": "data"}');

如果存在错误,则psubscribe的回调仅在第一个参数中返回错误。您可以找到更多信息here