SignalR Redis 背板实现

SignalR Redis backplane implementation

根据文章设置 redis 背板:https://docs.microsoft.com/en-us/aspnet/core/signalr/redis-backplane?view=aspnetcore-3.1,如何查看 redis 中发布的消息?。我想确保 redis pub/sub 确实被使用,而不是将它部署到 2 个不同的节点。

配置:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddStackExchangeRedis("localhost:6379", options => {
        options.Configuration.ChannelPrefix = "MyApp";
    });

当通过(中心 => 聊天中心)发送消息时,我将能够在 redis-cli 中看到:

await Clients.All.SendAsync("broadcastMessage", name, message);

订阅时不显示任何内容:

SUBSCRIBE 将订阅您提供的确切密钥,在本例中为 "MyApp"。这是错误的名称,因为 SignalR 将使用多个通道发送消息,并且只会使用 "MyApp" 作为通道名称的前缀。

如果您想收听所有开头带有 "MyApp" 的频道,则需要使用 PSUBSCRIBE 并为其指定频道名称模式(如 "MyApp*")。

或者你可以使用MONITOR命令查看Redis的所有流量。