c# - Signalr net client On 事件泛型类型参数

我想要我的客户端方法 HandleMessage使用所有类型的工具 IMessage ,所以我做了如下,但我的 HandleMessage 方法从未被击中。我应该只在 Hub.On<T> 中使用具体类型参数吗?事件?

信号客户端

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; }
}

最佳答案

我认为 SignalR 只支持具体类型的方法处理程序,您需要为每种类型添加特定的事件。

谢谢。

https://stackoverflow.com/questions/46152699/

相关文章:

reactjs - reactjs 应用程序中的全局 SASS 变量

string - 如何删除大括号之间的文本

r - 无法删除文件 - 打开我的 Rstudio

dataframe - 通过 [PySpark] 列连接两个 DataFrame

java - 反编译MCP报错(9.18版)返回 'Decompile Failed' 1

apache-spark - Kafka 结构化流 java.lang.NoClassDefFoun

azure - Azure WebApp 是否自动进行速率限制/DOS 保护?

google-cloud-platform - Google Cloud Endpoints 以 V

jekyll - 如何使用 Jekyll 将 CSS 导入 SCSS 文件?

php - 找不到属性 Application\Sonata\NewsBundle\Entity\P