Ejemplo n.º 1
0
        public void Configure(IApplicationBuilder app,
                              IHostingEnvironment env,
                              IServiceProvider serviceProvider,
                              ILoggerFactory loggerFactory,
                              IEventStoreConnection eventBus,
                              EventTypeResolver typeResolver,
                              WebSocketHandler handler)
        {
            app.UseCors("CorsPolicy");
            app.UseWebSockets();
            app.MapWebSocketManager("/ws", handler);

            var logger = loggerFactory.CreateLogger <Startup>();

            Policy.Handle <Exception>()
            .WaitAndRetryAsync(5, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)))
            .ExecuteAsync(async() =>
                          await eventBus.StartSubscription(EventStoreOptions, typeResolver,
                                                           async(message) => {
                logger.LogInformation(message.ToString());
                await handler.SendMessageToAllAsync(message);
            }))
            .Wait();
        }