Basic service configuration
This commit is contained in:
parent
bca6a14f1a
commit
7348833ab8
10
Squirrowse.Service/Hubs/IStreamHub.cs
Normal file
10
Squirrowse.Service/Hubs/IStreamHub.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Squirrowse.Service.Hubs
|
||||
{
|
||||
public interface IStreamHub
|
||||
{
|
||||
Task UploadByteStream(IAsyncEnumerable<byte[]> stream);
|
||||
}
|
||||
}
|
29
Squirrowse.Service/Hubs/StreamHub.cs
Normal file
29
Squirrowse.Service/Hubs/StreamHub.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.AccessControl;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using NLog;
|
||||
|
||||
namespace Squirrowse.Service.Hubs
|
||||
{
|
||||
public class StreamHub : Hub, IStreamHub
|
||||
{
|
||||
private readonly ILogger<StreamHub> logger;
|
||||
|
||||
public StreamHub(ILogger<StreamHub> logger)
|
||||
{
|
||||
this.logger = logger;
|
||||
}
|
||||
public async Task UploadByteStream(IAsyncEnumerable<byte[]> stream)
|
||||
{
|
||||
await foreach (var frame in stream)
|
||||
{
|
||||
logger.LogInformation($"Got frame size: {frame.Length} ");
|
||||
await Task.Delay(100); //leave some delay for debug purpose
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,26 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
using NLog;
|
||||
using NLog.Extensions.Logging;
|
||||
using NLog.Web;
|
||||
namespace Squirrowse.Service
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static IConfigurationRoot Configuration { get; set; }
|
||||
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
CreateHostBuilder(args).Build().Run();
|
||||
Configuration = CreateConfigurationBuilder().Build();
|
||||
var logger = GetLogger();
|
||||
try
|
||||
{
|
||||
logger.Debug("Application started");
|
||||
CreateHostBuilder(args)
|
||||
.Build()
|
||||
.Run();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Error(ex, "Stopped program because of exception when building WebHost");
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogManager.Shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||||
Host.CreateDefaultBuilder(args)
|
||||
public static IHostBuilder CreateHostBuilder(string[] args)
|
||||
{
|
||||
return Host.CreateDefaultBuilder(args)
|
||||
.ConfigureWebHostDefaults(webBuilder =>
|
||||
{
|
||||
webBuilder.UseStartup<Startup>();
|
||||
webBuilder.UseConfiguration(Configuration);
|
||||
webBuilder.UseNLog();
|
||||
});
|
||||
}
|
||||
|
||||
private static IConfigurationBuilder CreateConfigurationBuilder()
|
||||
{
|
||||
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
|
||||
return new ConfigurationBuilder()
|
||||
.SetBasePath(Directory.GetCurrentDirectory())
|
||||
.AddJsonFile("appsettings.json", false, true)
|
||||
.AddJsonFile($"appsettings.{environment}.json", false, true);
|
||||
}
|
||||
|
||||
private static ILogger GetLogger()
|
||||
{
|
||||
var nlogConfigSection = Configuration.GetSection("NLog");
|
||||
LogManager.Configuration = new NLogLoggingConfiguration(nlogConfigSection);
|
||||
ILogger logger = LogManager.GetCurrentClassLogger();
|
||||
return logger;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,8 @@
|
||||
"profiles": {
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"launchUrl": "weatherforecast",
|
||||
"launchBrowser": false,
|
||||
"launchUrl": "",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.App" Version="3.0.0-*" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.0.0" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.0" />
|
||||
<PackageReference Include="System.Reactive.Linq" Version="4.0.0" />
|
||||
<PackageReference Include="OpenCvSharp4.Windows" Version="4.1.1.20191021" />
|
||||
</ItemGroup>
|
||||
|
@ -1,15 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.HttpsPolicy;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Squirrowse.Service.Hubs;
|
||||
|
||||
namespace Squirrowse.Service
|
||||
{
|
||||
@ -26,15 +20,15 @@ namespace Squirrowse.Service
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddControllers();
|
||||
services.AddSignalR()
|
||||
.AddHubOptions<StreamHub>(opt => opt.MaximumReceiveMessageSize = 102400000)//~100mb per frame instead of 32kb default
|
||||
.AddMessagePackProtocol();
|
||||
}
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
||||
{
|
||||
if (env.IsDevelopment())
|
||||
{
|
||||
app.UseDeveloperExceptionPage();
|
||||
}
|
||||
if (env.IsDevelopment()) app.UseDeveloperExceptionPage();
|
||||
|
||||
app.UseHttpsRedirection();
|
||||
|
||||
@ -45,7 +39,8 @@ namespace Squirrowse.Service
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapControllers();
|
||||
endpoints.MapHub<StreamHub>($"{nameof(StreamHub)}");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -6,5 +6,36 @@
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"NLog": {
|
||||
"autoreload": true,
|
||||
"throwConfigExceptions": true,
|
||||
"variables": {
|
||||
"logDirectory": "${basedir}/logs"
|
||||
},
|
||||
"targets": {
|
||||
"FileLogger": {
|
||||
"type": "AsyncWrapper",
|
||||
"target": {
|
||||
"wrappedFile": {
|
||||
"type": "File",
|
||||
"fileName": "${logDirectory}/${machinename}.Log.txt",
|
||||
"layout": "${longdate} ${level}: ${message} ${exception:format=tostring}",
|
||||
"archiveFileName": "${logDirectory}/archives/${machinename}.Log_{#}.txt",
|
||||
"archiveDateFormat": "yyyy-MM-dd",
|
||||
"archiveAboveSize": "5242880",
|
||||
"archiveEvery": "Day",
|
||||
"archiveNumbering": "DateAndSequence",
|
||||
"maxArchiveFiles": "90"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rules": [
|
||||
{
|
||||
"logger": "*",
|
||||
"writeTo": "FileLogger"
|
||||
}
|
||||
]
|
||||
},
|
||||
"AllowedHosts": "*"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user