ASP.NET Core 集成 WebSocket


1. 環境

  • AspNetCore Web 2.0 (MVC)
  • Windows 10
  • IIS 10 Express/IIS
  • VS 2017

2.如何配置

  1. 在已有的或者新創建的 AspNet Core MVC 項目中安裝 Microsoft.AspNetCore.WebSockets
    Install-Package  Microsoft.AspNetCore.WebSockets 
  1. 配置中間件

Startup 類的 Configure 方法中添加 WebSocket 中間件,

    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請求

  1. 編寫具體業務代碼

  2. 部署運行項目

至此就完成了AspNetCore MVC集成 WebSocket

Tips

  1. app.UseWebSockets();一定要在 app.UserMVC()之前配置

  2. 使用自定義中間件優先處理WebSocket請求

完整示例

AspNetCoreWithWebSocketDemo.7z

參考資料

ASP.NET Core 中的 WebSocket 支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM