Redis 发送一个带有消息的对象以用于方法调用
Redis send a object with the message to use on method calling
你好,我将 redis 作为我的 SignalR 应用程序的背板,我希望 redis 向特定组发送消息,无论它们位于哪个 SignalR 实例上。我得到了 SignalR 和 redis 设置 我现在遇到的问题是我想发送属于 SignalR 方法使用的对象类型的数据,该方法将它发送到客户端。所以首先是 publishes
的方法
public async Task RedisBroadcast(string group, string message, object data)
{
var pub = Connection.GetSubscriber();
Program.WriteConsole($"> Broadcasting to Group: {group} Message: {message}");
await pub.PublishAsync(group, message);
}
我需要将参数数据与发布消息一起发送,因为稍后在子接收消息的方法中我想做类似的事情
await sub.SubscribeAsync(group, (channel, message) =>
{
Program.WriteConsole("Got notification: " + (string)message);
switch (message)
{
case "TopPlayers":
TopPlayersbroadcast(group, message, data);
break;
}
});
所以根据消息,我调用不同的方法,然后将带有数据的消息广播给所有被替换的客户端。这有可能吗?
可能,但您需要在有效载荷内编码数据,即在message
内,您在 (channel, message)
对中得到的 RedisValue
。 SE.Redis 库非常有意地不对有效载荷应该是什么样子发表意见,所以它不假设你想编码这样的东西。请注意,因为它是 RedisValue
,而不是 string
,您可以做一些比仅传递原始 string message
.
更细微的事情
如果是我,我可能会在这种情况下查看 protobuf-net 和对象继承之类的东西 - 因为 a:它与 SE.Redis 配合得很好,因为 SE.Redis 支持二进制有效负载,并且b:继承允许你相当容易地表示数据——大概是将 message
和 data
嵌入到与基本类型相同的基本消息中,但是 lots相似的方案存在不同的布局。
你好,我将 redis 作为我的 SignalR 应用程序的背板,我希望 redis 向特定组发送消息,无论它们位于哪个 SignalR 实例上。我得到了 SignalR 和 redis 设置 我现在遇到的问题是我想发送属于 SignalR 方法使用的对象类型的数据,该方法将它发送到客户端。所以首先是 publishes
的方法public async Task RedisBroadcast(string group, string message, object data)
{
var pub = Connection.GetSubscriber();
Program.WriteConsole($"> Broadcasting to Group: {group} Message: {message}");
await pub.PublishAsync(group, message);
}
我需要将参数数据与发布消息一起发送,因为稍后在子接收消息的方法中我想做类似的事情
await sub.SubscribeAsync(group, (channel, message) =>
{
Program.WriteConsole("Got notification: " + (string)message);
switch (message)
{
case "TopPlayers":
TopPlayersbroadcast(group, message, data);
break;
}
});
所以根据消息,我调用不同的方法,然后将带有数据的消息广播给所有被替换的客户端。这有可能吗?
可能,但您需要在有效载荷内编码数据,即在message
内,您在 (channel, message)
对中得到的 RedisValue
。 SE.Redis 库非常有意地不对有效载荷应该是什么样子发表意见,所以它不假设你想编码这样的东西。请注意,因为它是 RedisValue
,而不是 string
,您可以做一些比仅传递原始 string message
.
如果是我,我可能会在这种情况下查看 protobuf-net 和对象继承之类的东西 - 因为 a:它与 SE.Redis 配合得很好,因为 SE.Redis 支持二进制有效负载,并且b:继承允许你相当容易地表示数据——大概是将 message
和 data
嵌入到与基本类型相同的基本消息中,但是 lots相似的方案存在不同的布局。