Object Redis发送一个对象,其中包含要在方法调用时使用的消息
您好,我将redis作为我的SignalR应用程序的背板,我希望redis向特定组发送消息,无论它们位于哪个SignalR实例上。我得到了signer和redis设置。我现在遇到的问题是,我想向下发送一个对象类型的数据,该对象类型将由signer方法使用,该方法将数据向下发送到客户端。首先是发布的方法Object Redis发送一个对象,其中包含要在方法调用时使用的消息,object,redis,stackexchange.redis,Object,Redis,Stackexchange.redis,您好,我将redis作为我的SignalR应用程序的背板,我希望redis向特定组发送消息,无论它们位于哪个SignalR实例上。我得到了signer和redis设置。我现在遇到的问题是,我想向下发送一个对象类型的数据,该对象类型将由signer方法使用,该方法将数据向下发送到客户端。首先是发布的方法 public async Task RedisBroadcast(string group, string message, object data) { var pub
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);
}
我需要将参数数据与发布消息一起发送,因为稍后在sub接收消息的方法中,我希望执行类似的操作
await sub.SubscribeAsync(group, (channel, message) =>
{
Program.WriteConsole("Got notification: " + (string)message);
switch (message)
{
case "TopPlayers":
TopPlayersbroadcast(group, message, data);
break;
}
});
因此,根据消息的不同,我调用不同的方法,然后用数据将消息广播到所有子客户机。这是可能的吗?这是可能的,但您需要在有效负载内对数据进行编码,即在消息
内,在(频道,消息)
对中获得的重定值
。Redis库非常谨慎地没有对有效负载应该是什么样子的持有异议,所以它不认为您想要这样编码。请注意,因为它是一个重贴现值
,而不是字符串
,所以您可以做一些比传递原始字符串消息
更细微的事情
如果这是我,我可能会在这个场景中看到protobuf net和对象继承之类的东西-因为a:它与SE.Redis配合得很好,因为SE.Redis支持二进制有效负载,b:继承允许您相当容易地表示数据——可能是将消息
和数据
嵌入到与基类型相同的基本消息中,但是对于类似的方案存在许多不同的布局