(此作品同时公布在本人微信公众号“dotNET每金蕊华作品”,欢迎左侧2维码来关切。)

题记:Signal奥德赛作为ASP.NET中开始展览Web实时双向通讯的零部件,在ASP.NET
5中也获得了合伙前进。但是,用法和此前依旧在细节上有所不一样,而资料又相对少见。本文正是贰个简约的入门向导。

通过SignalMurano,开发人士能够在ASP.NET开发的Web应用中落到实处服务器和客户端的双向实时通讯。服务器能够即时推送内容给在线的客户端。Signal本田CR-V首选Web
Sockets作为底层达成,针对非现代浏览器也足以回退到其余包容技术。它的特点很丰盛,帮衬链接管理、分组连接和授权决定等。

在ASP.NET 5时期,Signal帕杰罗也同步升级到SignalR三.x,不过Javascript的客户端库依然二.x版本。同时,用法和后边在ASP.NET
四.x时期(比如在ASP.NET MVC
5中)还是有点①线的区分,所以导致参考现有文书档案只怕会遇上错误。那么哪些在ASP.NET
伍的Web应用中利用SignalPRADO 叁呢,上边就大概讲解一出手续:

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

2,新建成功后。在Solution
Explorer中打开“project.json”文件,在“dependencies”中丰裕”Microsoft.AspNet.Signal大切诺基.Server”:
“三.0.0-rc壹-final”,以便引用Signal中华V的服务端函数库

三,展开“Dependencies”,右击“Bower”节点,选用“Manage Bower
Packages…”选项,在Bower包安装界面,切换来“Browse”,搜索“SignalTiguan”并设置。必要小心的是,本文书写的时候只得设置signalr
二.2.0的js函数库,不过不影响使用。

四,成立3个文件夹(比如名叫”Hubs“)来含有全数Hub类,提议规范如此,并非强制要求。在Hubs文件夹中添加1个名称为ChatHub的类,并卫冕Microsoft.AspNet.SignalEscort.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);
    }
}

六,然后在Startup.cs文件中,的”ConfigureServices“中添加2行代码services.AddSignal福特Explorer();services.AddTransient<ChatHub>();。(第二行代码的指标是接二连三在Hub外部调用客户端方法的时候,可以方便的开始展览信赖注入。)接着在”Configure“中添加1行代码app.UseSignalMurano();

7,在视图像和文字件中达成投入、发送消息、呈现音讯的界面,代码基本参照了(http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc)中的。笔者添加了加入聊天的意义。别的,引用自动生成的hub代理js文件的地址由”signalr/hubs“变为了”signalr/js“。这几个地方,能够在Startup中配置,可是暗中同意值是以此且和事先分歧。

八,要从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地图