我有以下设置:
我现在正在尝试使用SignalR进行数据传输,以处理大约3500-〜5000键值对。这些对包含一个ID作为密钥,一个长名称作为值。
我正在从我的JS客户端向服务器发送请求,服务器会立即回答结果,但是客户端需要几分钟到几分钟才能下载数据。 5分钟后,客户端已从服务器下载了700个字节(!)。
这是在具有SSD和i5作为CPU的localhost上运行的,因此它应该运行得更快。
客户代码:
var selectedMarketID = GlobalVariables._currentMarketID;
var _dict = {
"selectedMarketID": selectedMarketID
};
var dict = JSON.stringify(_dict);
GlobalVariables._globalBroadcastStation.server.sendUserAvailableOrderStrings(dict);
服务器代码:
public void SendUserAvailableOrderStrings(string JSONData)
{
var userData = GetData();
Clients.Caller.messageReturn("availableOrderStrings", JsonConvert.SerializeObject(userData));
}
SignalR启动类:
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(WebApplication1.Classes.SignalR.Startup))]
namespace WebApplication1.Classes.SignalR
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
GlobalHost.Configuration.DefaultMessageBufferSize = 500;
app.MapSignalR();
}
}
}
在这种情况下,功能Clients.Caller.messageReturn
仅向用户显示输出。因此,那里没有进一步的计算。
无法拆分数据以将数据连续传输到用户,因为用户可以轻松更改前端中的设置,这将导致向服务器提出SendUserAvailableOrderStrings
的新请求。
为什么SignalR-Connection这么慢?