// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { Task.Factory.StartNew(ZeroApplication.Run); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } WebSocketNotify.Binding(app); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute( name: "api", template: "{controller}/{action}/{station}"); }); }
private static async Task Acceptor(HttpContext hc, Func <Task> n) { if (!hc.WebSockets.IsWebSocketRequest || !hc.Request.PathBase.HasValue) { return; } var classify = hc.Request.PathBase.Value.Trim('\\', '/', ' '); if (!Handlers.TryGetValue(classify, out var list)) { return; } var socket = await hc.WebSockets.AcceptWebSocketAsync(); var notify = new WebSocketNotify(socket, classify); list.Add(notify); await notify.EchoLoop(); list.Remove(notify); }