예제 #1
0
 public static IWebSocketHostBuilder ConfigureWebSocketMessageHandler(this IWebSocketHostBuilder builder, Func <WebSocketSession, WebSocketPackage, Task> handler)
 {
     return(builder.ConfigureServices((ctx, services) =>
     {
         services.AddSingleton <Func <WebSocketSession, WebSocketPackage, Task> >(handler);
     }) as IWebSocketHostBuilder);
 }
예제 #2
0
 public static IWebSocketHostBuilder UseCommand <TKey, TPackageInfo>(this IWebSocketHostBuilder builder, Action <CommandOptions> configurator)
     where TPackageInfo : class, IKeyedPackageInfo <TKey>
 {
     return(builder.UseCommand <TKey, TPackageInfo>()
            .ConfigureServices((ctx, services) =>
     {
         services.Configure(configurator);
     }) as IWebSocketHostBuilder);
 }
 public static IWebSocketHostBuilder UseCommand <TKey, TPackageInfo>(this IWebSocketHostBuilder builder)
     where TPackageInfo : class, IKeyedPackageInfo <TKey>
 {
     return(builder.UseMiddleware <CommandMiddleware <TKey, WebSocketPackage, TPackageInfo> >()
            .ConfigureServices((hostCxt, services) =>
     {
         services.Configure <CommandOptions>(hostCxt.Configuration?.GetSection("serverOptions")?.GetSection("commands"));
     }) as IWebSocketHostBuilder);
 }
예제 #4
0
 public static IWebSocketHostBuilder UseCommand <TKey, TPackageInfo, TPackageMapper>(this IWebSocketHostBuilder builder)
     where TPackageInfo : class, IKeyedPackageInfo <TKey>
     where TPackageMapper : class, IPackageMapper <WebSocketPackage, TPackageInfo>, new()
 {
     return(builder.ConfigureServices((ctx, services) =>
     {
         services.AddSingleton <IWebSocketCommandMiddleware, WebSocketCommandMiddleware <TKey, TPackageInfo, TPackageMapper> >();
     }).ConfigureServices((ctx, services) =>
     {
         services.Configure <CommandOptions>(ctx.Configuration?.GetSection("serverOptions")?.GetSection("commands"));
     }) as IWebSocketHostBuilder);
 }
 public static IWebSocketHostBuilder UseCommand <TKey, TPackageInfo, TPackageMapper>(this IWebSocketHostBuilder builder, Action <CommandOptions> configurator)
     where TPackageInfo : class, IKeyedPackageInfo <TKey>
     where TPackageMapper : class, IPackageMapper <WebSocketPackage, TPackageInfo>, new()
 {
     return(builder.UseCommand <TKey, TPackageInfo, TPackageMapper>()
            .ConfigureServices((hostCtx, services) =>
     {
         services.Configure(configurator);
     }) as IWebSocketHostBuilder);
 }
예제 #6
0
        public static IWebSocketHostBuilder UseCommand <TPackageInfo, TPackageMapper>(this IWebSocketHostBuilder builder)
            where TPackageInfo : class
            where TPackageMapper : class, IPackageMapper <WebSocketPackage, TPackageInfo>, new()
        {
            var keyType = CommandMiddlewareExtensions.GetKeyType <TPackageInfo>();
            var commandMiddlewareType = typeof(WebSocketCommandMiddleware <, ,>).MakeGenericType(keyType, typeof(TPackageInfo), typeof(TPackageMapper));

            return(builder.ConfigureServices((ctx, services) =>
            {
                services.AddSingleton(typeof(IWebSocketCommandMiddleware), commandMiddlewareType);
            }).ConfigureServices((ctx, services) =>
            {
                services.Configure <CommandOptions>(ctx.Configuration?.GetSection("serverOptions")?.GetSection("commands"));
            }) as IWebSocketHostBuilder);
        }