当前位置:首页 > 话题广场 > 攻略专题 > 游戏问答

.net 控件如何用?终于找到答案了关于.net core 中的signalR组件的使用

SignalR旨在提供更方便的web交互响应型推送解决方案。

有了它之后可以实现客户端直接调用服务端的方法并且获得返回值 (客户端可以是各种平台,目前SignalR支持的语言版本有C#、java、javaScript、nodejs等),服务端也是可以调用客户端的方法,通过这样的方式实现了由原来的单通变成双通的目的。

在SignalR中有个非常重要的概念就是hub,这个Hub如果拿到以前的MVC架构中所对应的就是控制器,他们的区别就是我们需要自己去注册这个Hub的路由,而控制器是可以基于约定的。

首先创建一个Hub

public class NewsPushHub:Hub

{

}

这是一个新闻推送的Hub,它必须要继承至Hub这个基类,Hub这个基类还可以接收一个泛型的实现,这个泛型可以用来规范客户端的方法

public class NewsPushHub : Hub<IClientFuncs>

{

/// <summary>

/// 可以被客户端调用的方法

/// </summary>

/// <param name="msg"></param>

/// <returns></returns>

public async Task DepartmentNotice(string msg)

{

//这里发送只能是接口中约束的方法

await Clien( msg);

}

}

/// <summary>

/// 定义客户端所监听的方法名称

/// </summary>

public interface IClientFuncs

{

Task SendMsg(string msg);

}

这里面写的两个方法是可以被客户端直接调用的,但是在被调用之前首先要注册,在Core3.0之前 我们是用a(hub=>;NewsPushHub>("/SignalRNews"))来注册SignalR的访问路由,现在改成全部统一在a()这个扩展方法中去注册,现在在Startup类的代码就像这样了

public class Startup

{

public void Configureservices(IServiceCollection services)

{

();

();

}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

{

if ())

{

a();

}

a();

a(endpoints =>

{

end;NewsPushHub>("/SignalRNews");

end("default", "{controller=Home}/{action=Index}/{id?}");

});

}

在这个里面我配置了包含MVC的中间件和依赖注入,在3.0中MVC的中间件和依赖注入都变了 变得更加具体,路由设置也变得统一在UseEndpoints()这个方法里面,它里面的委托是一个IEndpointRouteBuilder的参数,我们通过这个参数可以映射各种路由配置,有非常多的map,在这里配置MVC的目的是为了和SignalR交互的。下面是客户端的js代码首先需要安装aspnet-signalr

//创建一个匹配 http:localhost:5000/SignalRNews路由的连接

const connection = new ()

.withUrl("/SignalRNews")

.configureLogging)

.build();

// 开始连接,这个时候会发送一个101状态为pending的连接

connec().then(function () {

con("connected");

});

// 监听服务端调用的客户端方法

connec("sendMsg", (msg) => {

$(".dispaly-message").append(`<p>${msg}</p>`);

});

$("#submit").click(e => {

const msg = $("#msg").val();

// 调用服务端的DepartmentNotice方法

connec("DepartmentNotice", msg).then(() => {

con("消息发送完成");

});

})

上面是最终的结果 可以看出实现了不同客户端之间的消息互通

其实Signalr还可以有依赖注入的用法例如在控制器里面注入 然后直接在MVC中随意推送消息

public class HomeController:Controller

{

private readonly IHubContext<NewsPushHub> _hub;

public HomeController(IHubContext<NewsPushHub> hub)

{

= hub;

}

public IActionResult Index()

{

_("Temp", "test");

return View();

}

}

从上面代码中看的出在Home控制器中注入了NewsPushHub这个Hub 只要有一个客户端访问Index界面就会通知所有的客户端

总结:SignalR把原来复杂低效率的双通编程变得简单,Siganlr只要是支持3中模式进行客户端和服务端的连接(1、长轮询模式 2、服务器发送事件 3、websocket)最高效的当然是websocket 但是某一些浏览器是不支持的;

代码地址:

原文地址:

1.《.net 控件如何用?终于找到答案了关于.net core 中的signalR组件的使用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《.net 控件如何用?终于找到答案了关于.net core 中的signalR组件的使用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2171395.html

上一篇

007是什么公司?终于找到答案了“996”“007”违法 人社部最高法为企业划红线

下一篇

12306订票如何排队?我来告诉你答案买不到火车票?您可以试试这个新功能,“候补购票”能看到前面还有几个在排队

.net 控件如何用?总结很全面速看!关于.net core 中的signalR组件的使用

.net 控件如何用?总结很全面速看!关于.net core 中的signalR组件的使用

.net 控件如何用相关介绍,SignalR是为了提供更方便的web交互响应式到推送式的解决方案。 达到当天最大量API KEY 超过次数限制有了它之后可以实现客户端直接调用服务端的方法并且获得返回值 (客户端可以是各种平台,目前...

.net 控件如何用?总结很全面速看!基于 .NET 5的ComponentOne控件示例正式推出

.net 控件如何用?总结很全面速看!基于 .NET 5的ComponentOne控件示例正式推出

.net 控件如何用相关介绍,最近。NET控件集ComponentOne是。引入了样例FlexGrid表控件,以显示基于NET 5的FlexGrid表控件的搜索、格式、数据分组等操作。 最新推出的ComponentOne是一套专注...

.net 控件如何用?终于找到答案了.NET控件集ComponentOne 2018V3发布:新增图表动画及迷你图

.net 控件如何用?终于找到答案了.NET控件集ComponentOne 2018V3发布:新增图表动画及迷你图

.net 控件如何用相关介绍,“通过使用 ComponentOne .NET控件产品,实现了兼具 BS 架构灵活性与 CS 架构的客户体验。 达到当天最大量API KEY 超过次数限制丰富的控件满足了项目中的各种特殊需求,使得开发...

.net 控件如何用?总结很全面速看!优秀.NET界面控件DevExpress v19.1.6全新来袭!新改进抢“鲜”看

.net 控件如何用?总结很全面速看!优秀.NET界面控件DevExpress v19.1.6全新来袭!新改进抢“鲜”看

.net 控件如何用相关介绍,[要获得新体验,请单击“了解更多”!【成语】 DevExpress Universal subscription(又称dev express宇宙版或DXperience Universal Suite...

.net 控件如何用?总结很全面速看!.NET界面控件DevExpress v19.1.3重磅来袭

.net 控件如何用相关介绍,DevExpress Universal subscription(又称dev express宇宙版或DXperience Universal Suite)是世界上广泛使用的。作为NET用户界面控制包...

关于.net 控件如何用,你需要知道这些界面开发:如何.NET控件实现套打报表?

关于.net 控件如何用,你需要知道这些界面开发:如何.NET控件实现套打报表?

.net 控件如何用相关介绍,如果使用ActiveReports报告控件执行发票打印、运单打印、物流列表打印、商品条形码打印、员工卡打印等功能,则在报告设计阶段,只需将卡纸加载到报告背景图片中,实际打印时只需在卡纸的相应位置打印数...

关于.net 控件如何用,你需要知道这些.NET控件ActiveReports让报表开发成为拖拽游戏

关于.net 控件如何用,你需要知道这些.NET控件ActiveReports让报表开发成为拖拽游戏

.net 控件如何用相关介绍,ActiveReports是。NET和。专注于NET核心平台的报告控件。使用拖放报表设计器,可以使用WinForm、ASP。NET、ASP。您可以快速设计报告,包括Excel表单、Word文档、图表、...

.net 控件如何用?总结很全面速看!aspnet中的一些控件使用(基础入门4)

.net 控件如何用?总结很全面速看!aspnet中的一些控件使用(基础入门4)

.net 控件如何用相关介绍,上一节回顾 上节课讲了A连接数据库,查询了数据。查询数据库以确定是否有需要查询的数据,数据存在时为label分配“登录成功”,没有数据时为label分配“帐户或密码错误”。 在上一节中,我们学习了如下...