(此篇以上于自家微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)

题记:SignalR作为ASP.NET中进行Web实时双向通信的零部件,在ASP.NET
5饱受吗取了合伙前进。不过,用法与前还是当细节上有所不同,而资料并且相对稀少。本文就是一个简约的入门向导。

通过SignalR,开发人员可以于ASP.NET开发的Web应用被实现服务器和客户端的双向实时通信。服务器可以就经常推送内容被在线的客户端。SignalR首选Web
Sockets作为底层实现,针对无现代浏览器为可以回退到另外兼容技术。它的特征很丰富,支持链接管理、分组连接和授权决定相当。

每当ASP.NET 5时代,SignalR也并升级至SignalR
3.x,不过Javascript的客户端库还是2.x本。同时,用法以及事先在ASP.NET
4.x时代(比如当ASP.NET MVC
5中)还是来硌薄的分别,所以造成参考现有文档可能会见遇上错误。那么怎样以ASP.NET
5的Web应用被使用SignalR 3呢,下面就是概括讲解一下手续:

1,不用说,一开始即是新建一个ASP.NET 5的Web应用程序项目

2,新建成功后。在Solution
Explorer中打开“project.json”文件,在“dependencies”中添加”Microsoft.AspNet.SignalR.Server”:
“3.0.0-rc1-final”,以便引用SignalR的劳务端函数库

3,展开“Dependencies”,右击“Bower”节点,选择“Manage Bower
Packages…”选项,在Bower包安装界面,切换至“Browse”,搜索“SignalR”并安装。需要注意的是,本文书写的时候只得设置signalr
2.2.0底js函数库,但是不影响使。

4,创建一个文本夹(比如名也”Hubs“)来含有有Hub类,建议规范如此,并非强制要求。在Hubs文件夹着补充加一个叫作也ChatHub的近乎,并延续Microsoft.AspNet.SignalR.Hub。

5,理论及,如果你独自打算从服务端往客户端推送消息的讲话,Hub类里面可以不写任何东西。不过为实现一个略的聊天功能,我们要写点东西,写了少数只点子Send和Join供客户端调用。代码如下:

public class ChatHub : Hub
{
    public void Send(string message)
    {
        var name = Context.Request.HttpContext.Session.GetString("name");
        Clients.All.addNewMessageToPage(name, message);
    }

    public void Join(string name)
    {
        Context.Request.HttpContext.Session.SetString("name", name);
    }
}

6,然后在Startup.cs文件中,的”ConfigureServices“中补充加2行代码services.AddSignalR();services.AddTransient<ChatHub>();。(第二履行代码的目的是继承在Hub外部调用客户端方法的时光,可以便宜的开展依赖注入。)接着以”Configure“中长1行代码app.UseSignalR();

7,在视图文件被实现投入、发送信息、显示信息之界面json,代码基本参照了(http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc)中之。我加加了参加聊天的意义。另外,引用自动生成的hub代理js文件的地方由”signalr/hubs“变为了”signalr/js“。这个地址,可以在Startup中配置,不过默认值是是还与前不同。

8,要由Hub中发送信息及客户端,需要在服务端的代码中经依赖注入引用IHubContext<ChatHub>,并一直调用dynamic方法。代码如下:

private readonly IHubContext<ChatHub> _hub;

public HomeController(IHubContext<ChatHub> hub)
{
    _hub = hub;
}

public IActionResult SendMessageToClients(string message)
{
    _hub.Clients.All.sendMessageFromServer(message);
    return Content("<h1>OK</h1>");
}

一体化的档次代码共享地址在:https://zyg.blob.core.windows.net/share/ASP.NET%205%20SignalR.zip

相关文章

网站地图xml地图