Install-Package Microsoft.AspNetCore.WebSockets
在 Startup 類的 Configure 方法中添加 WebSocket 中間件,web
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseBrowserLink(); app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); //Be sure to configure before mvc middleware. //var webSocketOptions = new WebSocketOptions() //{ // KeepAliveInterval = TimeSpan.FromSeconds(120), // ReceiveBufferSize = 4 * 1024 //}; //app.UseWebSockets(webSocketOptions); app.Use(async (context, next) => { if (context.WebSockets.IsWebSocketRequest) { using (IServiceScope scope = app.ApplicationServices.CreateScope()) { //do something WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync(); ProcessWebSocketRequest(webSocket); } } else { //Hand over to the next middleware await next(); } }); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
必定要在MVC中間件以前配置WebSocket中間件,不然沒法接受到WebSocket請求websocket
編寫具體業務代碼mvc
部署運行項目app
至此就完成了AspNetCore MVC集成 WebSocketsocket
app.UseWebSockets();必定要在 app.UserMVC()以前配置async
使用自定義中間件優先處理WebSocket請求ui
AspNetCoreWithWebSocketDemo.7zcode