예제 #1
0
        public void Configuration(IAppBuilder builder)
        {
            var config = new HttpConfiguration();

            // Configure routing
            config.MapHttpAttributeRoutes();

            // Configure serialization
            config.Formatters.XmlFormatter.UseXmlSerializer = true;
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver
                = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();

            config.Routes.MapHttpRoute("tradingApi", "api/trading/{id}",
                                       new { controller = "Trading", id = RouteParameter.Optional });


            config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}",
                                       new { controller = "{controller}", id = RouteParameter.Optional });

            // replace the default controller activator
            config.Services.Replace(
                typeof(IHttpControllerActivator),
                new ControlActivatorPublisher(
                    Observer.Create <CommandWrapper>(
                        x => agent.Post <CommandWrapper>(x))));

            // Enable Swagger and Swagger UI
            config
            .EnableSwagger(c => c.SingleApiVersion("v1", "StockTicker API"))
            .EnableSwaggerUi();

            var configSignalR = new HubConfiguration()
            {
                EnableDetailedErrors = true
            };                                                                            // #E

            GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule());
            Owin.CorsExtensions.UseCors(builder, Microsoft.Owin.Cors.CorsOptions.AllowAll);

            TradingCoordinator.Instance()
            .AddPublisher(StockMarket.StockMarket.Instance().AsObservable());

            //  MapSignalR() is an extension method of IAppBuilder provided by SignalR to facilitate mapping and configuration of the hub service.
            //  The generic overload MapSignalR<TConnection> is used to map persistent connections, that we do not have to specify the classes that implement the services
            builder.MapSignalR(configSignalR);
            builder.UseWebApi(config);
        }
예제 #2
0
 public StockTickerHub()
 {
     stockMarket        = StockMarket.StockMarket.Instance();
     tradingCoordinator = TradingCoordinator.Instance();
 }