-进入聊天页面 ~/Home/Chat 1 可能出现的问题: The following errors occurre
ASP.Net MVC SignalR的应用
比来做的一个MVC项目有个模块是要使用即时通信实现弹幕效果。既要考虑通信的实时性也要考虑处事器性能和资源消耗,所幸项目对浏览器的版本没有要求。所以我最先想到用WebSocket来实现,在盘问资料时, 看到 SignalR 这个技术,也就是本专题所讨论的东西。在拜读了 史上最全面的SignalR系列教程-认识SignalR ,算是对 SignalR有一个简单的认识,SignalR 是 .NET平台为我们供给的一种简洁高效智能的实时信息交互技术,SignalR 比 WebSocket 还要简单,这的确是我的福音。所以我直接一个Demo开始测验考试。
SignalR
关于SignalR的介绍这边就不久不多赘述,可以去看我上面说的这篇博文史上最全面的SignalR系列教程-认识SignalR 或者直接看Microsoft文档 Introduction to SignalR,SignalR可用于任何即时性的成果;
Demo :使用SignalR和MVC 5实现实时聊天
通过第一部分的介绍,相信大家对SignalR有初阶的认识,接下来直接上手一个Demo来看看(我的开发环境:VS2019 + .net 4.6.2 + MVC 5)。法式参考微软教程 Tutorial: Real-time chat with SignalR 2 and MVC 5。
使用Visual Studio 2019 创建一个MVC工程-SignalRMvcChat
创建ASP.NET Web应用措施
配置项目
选择MVC,然后身份验证上,选择“无身份验证”,然后单击“创建”。
在项目上右击-添加新建项,选择 Installed > Visual C# > Web > SignalR and then 选择 SignalR Hub Class (v2).
将类定名为ChatHub并将其添加到项目中。 此法式将创建ChatHub.cs集线器类文件,并将一组撑持SignalR的脚本文件和措施集引用添加到项目:
用以下代码替换新建的ChatHub.cs类文件中的代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.AspNet.SignalR; namespace SignalRMvcChat { public class ChatHub : Hub { public void Send(string name, string message) { Clients.All.addNewMessageToPage(name, message); } } }
在项目上,右键选择 添加>类,定名为Startup.cs,并用以下代码替换新建的Startup.cs类文件中的代码:
using Owin; using Microsoft.Owin; [assembly: OwinStartup(typeof(SignalRMvcChat.Startup))] namespace SignalRMvcChat { public class Startup { public void Configuration(IAppBuilder app) { // Any connection or hub wire up and configuration should go here app.MapSignalR(); } } }
注意: SignalR 框架使用Owin组件,每一个使用的OWin组件的Web框架都需要一个Startup入口类,用来声明OWin组件:
1.项目会自动扫描措施集根下的名为Startup的类,来作为入口类;
2.通过添加 [assembly: OwinStartup(typeof(SignalRChat.Startup))] 标签符号入口类;
3.如果你的启动类不在当前定名空间下,需要在Web.config中添加节点: ,来指定启动类;
在Home控制器中添加一个要领,来返回下面聊天法式所使用的页面:在 HomeController.cs 中添加以下要领:
public ActionResult Chat() { return View(); }
在Views/Home中添加Chat视图,并用以下代码替换到新建的视图文件中:(注意:视图中所引用的signalR脚本可能跟你实际安置的版本不一样,这里需要你按照实际安置的版本进行改削)
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/32470.html
- 上一篇:WKT转GeoJSON
- 下一篇: HTTP与HTTPs的区别