Net Core 学习入门(八)-----使用SingalR2.0创建实时web应用

       在netFrameWork4.5之后,微软提供了websocket相关的开发类库,使得后台可以和客户端建立起websocket链接,服务器可以做到向客户端推送消息。SingalR是包含websocket技术,专门为服务器推送开发集成的一个开发框架,使用他,你可以快速的开发推送服务。websocket不兼容ie8以下等浏览器,但是使用singalR会根据浏览器的不同选择不同的传输方式,例如ie7采用长连接,支持websocket的使用websocket,不存在浏览器兼容问题

1,新建web-mvc项目。

2,下载开发包,通过nuget

Net Core 学习入门(八)-----使用SingalR2.0创建实时web应用_第1张图片3, SignalR内部有两类对象:

  1. Http持久连接(Persisten Connection)对象:用来解决长时间连接的功能。还可以由客户端主动向服务器要求数据,而服务器端不需要实现太多细节,只需要处理PersistentConnection 内所提供的五个事件:OnConnected, OnReconnected, OnReceived, OnError 和 OnDisconnect 即可。注:一般用于大资源上传(app向服务端上传)。
  2. Hub(集线器)对象:用来解决实时(realtime)信息交换的功能,服务端可以利用URL来注册一个或多个Hub,只要连接到这个Hub,就能与所有的客户端共享发送到服务器上的信息,同时服务端可以调用客户端的脚本。注:这个做聊天室之类的东西,也可以用于web在线推送服务。在没有websocket的时候,大多数网站消息推送都是,在web页面开启一个线程来不断的扫描服务器的api接口来获取新消息,这样比较浪费服务器资源,而signalR是服务器推送到在线的客户端。

4,安装了signalR之后,添加新文件,就会多出一个sinalR选项。我们选择集线器。

Net Core 学习入门(八)-----使用SingalR2.0创建实时web应用_第2张图片

public class MyHub1 : Hub
    {
        public void Send(string name, string message)
        {
            // Call the addNewMessageToPage method to update clients.
            Clients.All.addNewMessageToPage(name, message);
        }
    }

4,web页面代码

@{
    ViewBag.Title = "Home Page";
}
    @section scripts{ }

    6,创建startup类注册集线器

    using System;
    using System.Threading.Tasks;
    using Microsoft.Owin;
    using Owin;
    
    [assembly: OwinStartup(typeof(WebApplication1.App_Start.Startup))]
    
    namespace WebApplication1.App_Start
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?
    
                app.MapSignalR();
            }
        }
    }
    

    7,官网文档

     

    你可能感兴趣的:(C#中高级)