我计划在客户端和服务器之间使用 signalR 进行一些实时通信。但是客户端不时需要向服务器发送大约 15MB 的大数据。
1)看起来 signalR 不适合发送大数据。他们是否在最近的版本中添加了对发送大数据的任何支持?
2)我可以在消息中发送的最大数据数组是多少?
3)拆分大数据并将其作为较小的块发送是否太慢?
4)什么是替代选项?有什么我可以研究的例子吗?
5) 我可以运行 WCF 服务来传输大数据以及 signalR 进行实时通信吗?
通过 SignalR 发送将使用错误的工具来完成这项工作。在这种情况下,最好的办法是通过 SignalR 发送一条特定消息,该消息将 URL 作为参数传递。然后,您可以使用多种方法在客户端触发基于标准 HTTP GET 的下载来处理。
如果您真的非常需要使用 SignalR,您可以查看我的答案: 如何在 .NET 客户端中通过 SignalR 发送大数据
您可以通过将 MaxIncomingWebSocketMessageSize 设置为 null 在 Startup.cs 中添加使消息大小为“无限”的行:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
GlobalHost.Configuration.MaxIncomingWebSocketMessageSize = null;
}
}
} 我的工作有约 200kb 的数据,10 条消息始终发送。我不知道如果每秒发送的数据更多,它的效果如何。
拆分数据并发送。您可以发送后台模式或正常发送,使用压缩技术,这样可以减少数据大小。