我想要我的客户端方法 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 变量
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