gpt4 book ai didi

c# - ASP.NET Core 2 SignalR Hub 接收复杂对象而不是字符串

转载 作者:行者123 更新时间:2023-11-30 22:56:44 24 4
gpt4 key购买 nike

我目前正在使用 SignalR Core 开发 ASP.NET Core 2 应用程序。我想知道是否可以在 Hub 类中接收一个复杂的对象,而不是一个简单的字符串或简单的数据结构。

工作 - 这个例子工作正常:string message

public class MyHub : Hub
{
public Task SendMessage(string message)
{
// ... some logic
}
}

工作 - 这个例子也工作得很好:List<Dictionary<string, object>> message

public class MyHub : Hub
{
public Task SendMessage(List<Dictionary<string, object>> message)
{
// ... some logic
}
}

无法正常工作 - 似乎我无法通过 SignalR 传输复杂对象,例如如果我创建自定义消息类:

public class Message 
{
public int MessageId { get; set; }

public List<Dictionary<string, object>> Items { get; set; }

public List<string> TextMessages { get; set; }
}

public class MyHub : Hub
{
public Task SendMessage(Message message)
{
// ... some logic
}
}

您知道如何通过 SignalR RPC 传输复杂对象吗?

谢谢!

最佳答案

您可以使用 Newtonsoft.Json Nuget。

您有一个 JsonConverter 可以序列化您的对象。

所以在你的例子中:

    public class MyHub : Hub
{
public Task SendMessage(Message message)
{
var messageJsonString = JsonConvert.SerializeObject<Message>(message);
// some logic
}
}

在您的客户端上,您可以将其转换回对象。它有一个本地 API,因此您只需调用

connection.on("ReceiveMessage",  (message) => { 
let messageObject = JSON.parse(message);
// Other code here
});

现在消息又是您从服务器发送的对象。

当然你可以使用JsonConvert.DeserializeObject<T>()将从客户端收到的 json 字符串转换为对象。

关于c# - ASP.NET Core 2 SignalR Hub 接收复杂对象而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54177801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com