I am using SignalR Core with ASP.Net Core.
I want to override GlobalHost settings for signalR.
I am getting this-
protected void Application_Start(object sender, EventArgs e)
{
// Make long polling connections wait a maximum of 110 seconds for a
// response. When that time expires, trigger a timeout command and
// make the client reconnect.
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(110);
// Wait a maximum of 30 seconds after a transport connection is lost
// before raising the Disconnected event to terminate the SignalR connection.
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(30);
// For transports other than long polling, send a keepalive packet every
// 10 seconds.
// This value must be no more than 1/3 of the DisconnectTimeout value.
GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(10);
RouteTable.Routes.MapHubs();
}
But I can't configure it with my application.
It is on ASP.Net Core v1.0.
My Startup.cs is like this-
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Cors.Infrastructure;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
namespace McpSmyrilLine
{
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
if (env.IsDevelopment())
{
// This will push telemetry data through Application Insights pipeline faster, allowing you to view results immediately.
builder.AddApplicationInsightsSettings(developerMode: true);
}
Configuration = builder.Build();
}
public IConfigurationRoot Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
//Add DB Context
var connectionStringBuilder = new Microsoft.Data.Sqlite.SqliteConnectionStringBuilder { DataSource = "mcp.db" };
var connectionString = connectionStringBuilder.ToString();
///////////////Add Cors
var corsBuilder = new CorsPolicyBuilder();
corsBuilder.AllowAnyHeader();
corsBuilder.AllowAnyMethod();
corsBuilder.AllowAnyOrigin();
corsBuilder.AllowCredentials();
services.AddCors(options =>
{
options.AddPolicy("AllowAll", corsBuilder.Build());
});
///////////////End Cors
services.AddDbContext<McpDbContext>(options =>
options.UseSqlite(connectionString));
services.AddMvc();
services.AddSignalR(options => { options.Hubs.EnableDetailedErrors = true; });
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
//Configure Cors
app.UseCors("AllowAll");
app.UseSignalR();
app.UseApplicationInsightsRequestTelemetry();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
//Adding Seeder Data
AddTestData(app.ApplicationServices.GetService<McpDbContext>());
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseApplicationInsightsExceptionTelemetry();
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
private static void AddTestData(McpDbContext context)
{
//var testUser1 = new DbModels.Try.User
//{
// Id = "abc123",
// FirstName = "Luke",
// LastName = "Skywalker"
//};
//context.Users.Add(testUser1);
//var testPost1 = new DbModels.Try.Post
//{
// Id = "def234",
// UserId = testUser1.Id,
// Content = "What a piece of junk!"
//};
//context.Posts.Add(testPost1);
//context.SaveChanges();
}
}
}
Can anyone please help?
SignalR is deprecated. May I know the latest package for the same. The package Microsoft. AspNetCore.
In the default mode, the app server creates five server connections with Azure SignalR Service. The app server uses the Azure SignalR Service SDK by default. In the following performance test results, server connections are increased to 15 (or more for broadcasting and sending a message to a big group).
SignalR supports full duplex communication that allows the client and server to transfer data back and forth.
There's a Transports
property in SignalROptions
You can setup the SignalR middleware like this :
services.AddSignalR(options => {
options.Hubs.EnableDetailedErrors = true;
var transports = options.Transports;
transports.DisconnectTimeout = TimeSpan.FromSeconds(30);
transports.KeepAlive = TimeSpan.FromSeconds(10);
transports.TransportConnectTimeout = TimeSpan.FromSeconds(110);
});
Transport options can be configured throught MapHub
:
app.UseSignalR(configure =>
{
configure.MapHub<Hub>("hub", options =>
{
options.Transports = TransportType.All;
options.LongPolling.PollTimeout = TimeSpan.FromSeconds(10);
options.WebSockets.CloseTimeout = TimeSpan.FromSeconds(10);
});
})
and on client side:
let logger: ILogger;
let transportType: TransportType;
const hubConnetion = new HubConnection(
new HttpConnection(
url,
{
transport: transportType,
logging: logger
}));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With