C# 事件泛型类型参数上的信号器网络客户端
我希望我的客户机方法HandleMessage能够处理所有类型的IMessage,所以我做了如下操作,但我的HandleMessage方法从未被命中。我应该只在Hub.On事件中使用具体类型参数吗 信号客户端 类型C# 事件泛型类型参数上的信号器网络客户端,c#,signalr,signalr-hub,signalr.client,C#,Signalr,Signalr Hub,Signalr.client,我希望我的客户机方法HandleMessage能够处理所有类型的IMessage,所以我做了如下操作,但我的HandleMessage方法从未被命中。我应该只在Hub.On事件中使用具体类型参数吗 信号客户端 类型 我认为signar只支持具体的类型方法处理程序,您需要为每种类型添加特定的事件 谢谢。我想是的,但你确定吗?你有任何文件支持这一点吗? Hub = Connection.CreateHubProxy("Test"); Hub.On<IMessage>("ReceiveMe
我认为signar只支持具体的类型方法处理程序,您需要为每种类型添加特定的事件
谢谢。我想是的,但你确定吗?你有任何文件支持这一点吗?
Hub = Connection.CreateHubProxy("Test");
Hub.On<IMessage>("ReceiveMessage", (payload) => HandleMessage(payload));
await Connection.Start();
public static async Task BroadCast(Payload payload)
{
try
{
var user = UserHandler.UserList.Find(x => x.UserId == payload.CustomerId.ToString());
if (user != null)
{
await SendRelatedPayload(payload, user);
}
}
catch (Exception ex)
{
}
}
private static async Task SendRelatedPayload(Payload payload, UserConnection user)
{
string[] data = payload.MessageContent.Split('|');
switch (payload.MessageType)
{
case (short)MessageType.Order:
IMessage order = new Order
{
CustomerId = data[0],
OrderId = data[1],
OrderStatus = data[2],
};
await context.Clients.Client(user.ConnectionId).ReceiveMessage(order);
break;
case (short)MessageType.Accrual:
IMessage accrual = new Accrual
{
CustomerId = data[0],
OrderId = data[1],
Nominal = data[2],
Price = data[3],
};
await context.Clients.Client(user.ConnectionId).ReceiveMessage(accrual);
break;
}
}
public interface IMessage
{
string CustomerId { get; set; }
}
public class Accrual : IMessage
{
public string OrderId { get; set; }
public string Price { get; set; }
public string Nominal { get; set; }
public string CustomerId { get; set; }
}
public class Order : IMessage
{
public string OrderId { get; set; }
public string OrderStatus { get; set; }
public string CustomerId { get; set; }
}