我在服务器端的Windows Service SignalR Hub中面临内存利用率问题,我需要代码修复来提高性能。
我尝试增加和减小DefaultMessageBufferSize作为服务器代码的一部分,如下所示:
GlobalHost.Configuration.DefaultMessageBufferSize = 2000;
服务器代码:
public class SignalHub : Hub
{
GlobalHost.Configuration.DefaultMessageBufferSize = 2000;
SignalR = WebApp.Start<Startup>(SignalRurl);
return true;
}
客户代码:
public static bool ConnectToSignalRServer()
{
Connection = new HubConnection(Url);
var myHub = Connection.CreateHubProxy("SignalHub");
Connection.Start().ContinueWith(task =>
{
if (task.IsFaulted)
{
}
else
{
Connection.Closed += Connection_Closed;
}
}).Wait();
myHub.On<string>("GetMessgeFromServer", type =>
{
Task.Run(() => RequestData(type));
});
myHub.Invoke<string>("GetHostName", BLConstants.strHostName);
return true;
}
private static void Connection_Closed()
{
try
{
while (true)
{
System.Threading.Thread.Sleep(1000 * 10);
bool connected = ConnectToSignalRServer();
if (connected)
{
break;
}
}
}
catch (Exception ex){}
}
SignalR Hub Server的内存利用率应该降低。