ASP.NET Core SignalR:基础概述
一、简介
ASP.NET Core SignalR 是一个开源代码库,它简化了向应用添加实时 Web 功能的过程。 实时 Web 功能使服务器端代码能够即时将内容推送到客户端。
SignalR 的适用对象:
- 需要来自服务器的高频率更新的应用。 例如:游戏、社交网络、投票、拍卖、地图和 GPS 应用。
- 仪表板和监视应用。 示例包括公司仪表板、销售状态即时更新或行程警示。
- 协作应用。 协作应用的示例包括白板应用和团队会议软件。
- 需要通知的应用。 社交网络、电子邮件、聊天、游戏、行程警示以及许多其他应用都使用通知。
SignalR 提供了一个用于创建服务器到客户端远程过程调用(RPC)的 API。 RPC 通过服务器端 .NET Core 代码调用客户端上的 JavaScript 函数。
以下是 ASP.NET Core SignalR 的一些功能:
- 自动管理连接。
- 同时向所有连接的客户端发送消息。 例如,聊天室。
- 将消息发送到特定的客户端或客户端组。
- 扩展以处理增加的流量。
二、软件
1、vs2017
2、.Net Core SDK 2.2
三、添加SignalR客户端库
1、在“解决方案资源管理器” 中,右键单击项目,然后选择“添加” >“客户端库” 。
2、在“添加客户端库” 对话框中,对于“提供程序” ,选择“unpkg” 。
3、对于“库” ,输入 @aspnet/signalr@1,然后选择不是预览版的最新版本。

4、选择“选择特定文件” ,展开“dist/browser” 文件夹,然后选择“signalr.js” 和“signalr.min.js” 。
5、将“目标位置” 设置为 wwwroot/lib/signalr/ ,然后选择“安装”,将会创建 wwwroot/lib/signalr 文件夹并将所选文件复制到该文件夹 。

四、创建SginalR类
创建文件BaseHub.cs。
namespace SignalRDemo.Hubs
{
public class BaseHub : Hub
{
public async Task SendMessage(string user,string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
BaseHub类继承SginalR的Hub类。Hub管理连接、组和消息。
客户端可通过调用SendMessage向客户端发送消息。SignalR 代码是异步模式,可提供最大的可伸缩性。
五、配置SignalR
在 Startup.cs 文件中将SignalR注入到中间件管道,并注册前端的访问地址。
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
//......
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//......
app.UseSignalR(routes =>
{
routes.MapHub<BaseHub>("/Hub");
});
//.....
}
六、客户端页面通信
1、引用 signalr.js
<script src="~/lib/signalr/dist/browser/signalr.js"></script>
2、创建并且启动连接
3、添加接收服务器端消息ReceiveMessage的处理程序
4、添加点击事件,发送消息至服务器端SendMessage方法
<script type="text/javascript">
//1、创建并且启动连接
var connection = new signalR.HubConnectionBuilder().withUrl("/Hub").build(); connection.start().then(function () { }).catch(function (err) {
return console.error(err.toString());
});
//2、添加接收服务器端消息ReceiveMessage的处理程序
connection.on("ReceiveMessage", function (user, message) {
$('#content').append(user + ":" + message);
}); //3、添加点击事件,发送消息至服务器端SendMessage方法
$(document).on('click','#btn_submit', function () {
var user = $("#user").val();
var message = $("#message").val();
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
event.preventDefault();
})
</script>
5、页面元素
<div class="text-center">
<input type="text" id="user"/>
<input type="text" id="message"/>
<input type="button" value="发送" id="btn_submit"/>
</div>
<div id="content"> </div>
七、效果

在两个输入框输入信息,点击发送会在页面上显示。
ASP.NET Core SignalR:基础概述的更多相关文章
- ASP.NET CORE使用WebUploader对大文件分片上传,并通过ASP.NET CORE SignalR实时反馈后台处理进度给前端展示
本次,我们来实现一个单个大文件上传,并且把后台对上传文件的处理进度通过ASP.NET CORE SignalR反馈给前端展示,比如上传一个大的zip压缩包文件,后台进行解压缩,并且对压缩包中的文件进行 ...
- ASP.NET Core SignalR中的流式传输
什么是流式传输? 流式传输是这一种以稳定持续流的形式传输数据的技术. 流式传输的使用场景 有些场景中,服务器返回的数据量较大,等待时间较长,客户端不得不等待服务器返回所有数据后,再进行相应的操作.这时 ...
- Asp.Net Core SignalR 用泛型Hub优雅的调用前端方法及传参
继续学习 最近一直在使用Asp.Net Core SignalR(下面成SignalR Core)为小程序提供websocket支持,前端时间也发了一个学习笔记,在使用过程中稍微看了下它的源码,不得不 ...
- Asp.Net Core SignalR 与微信小程序交互笔记
什么是Asp.Net Core SignalR Asp.Net Core SignalR 是微软开发的一套基于Asp.Net Core的与Web进行实时交互的类库,它使我们的应用能够实时的把数据推送给 ...
- [asp.net core]SignalR一个例子
摘要 在一个后台管理的页面想实时监控一些操作的数据,想到用signalR. 一个例子 asp.net core+signalR 使用Nuget安装包:Microsoft.AspNetCore.Sign ...
- ASP.NET Core SignalR
ASP.NET Core SignalR 是微软开发的一套基于ASP.NET Core的与Web进行实时交互的类库,它使我们的应用能够实时的把数据推送给Web客户端. 功能 自动管理连接 允许同时广播 ...
- ASP.NET Core SignalR 使用
SignalR: 实时 Web 功能使服务器端代码能够即时将内容推送到客户端(包括B/S,C/S,Andriod). SignalR最新版本为3.0(截止2020-02-28) SignalR ...
- 使用websocket连接(对接)asp.net core signalr
使用通用websocket连接asp.net core signalr 一.背景介绍 signalr的功能很强大,可以为我们实现websocket服务端节省不少的时间.但是可能由于不同的环境,我们在对 ...
- asp.net core 系列 1 概述
一. 概述 ASP.NET Core 是一个跨平台的高性能开源框架,可以用来:建置 Web 应用程序和服务.IoT应用和移动后端.在 Windows macOS 和 Linux 上使用喜爱的开发工 ...
随机推荐
- 2016/09/29 Maven简介
1.1 何为Maven Maven这个词可以翻译为"知识的积累",也可以翻译为"专家"或"内行".作为Apache组织中的一个颇为成功的开源 ...
- html5-心跳
html5-心跳效果 (1) 基础布局(架子) <div class="heart"> <div class="left"></d ...
- 「SAP技术」SAP VL02N 执行批次拆分报错,说不允许批次拆分?
1,如下新建的DN 80017843,storage location 字段值为空.VL02N 试图去做批次拆分失败,系统报错说,Batch split is not permitted for ma ...
- iOS开发之微信第三方登录
参考链接:https://blog.csdn.net/lichuandev/article/details/79878730 参考链接:https://www.jianshu.com/p/59e2ac ...
- Android 项目优化(三):MultiDex 优化
在整理MultiDex优化之前,先了解一下Apk的编译流程,这样有助于后面针对MultiDex优化. 一.Apk 编译流程 Android Studio 按下编译按钮后发生了什么? 1. 打包资源文件 ...
- Mac 安装nginx之后重启、停止、开启等操作
操作系统:macOs High Sierra 10.13.6 1.我用的homebrew安装的nignx1.15.9,安装完成之后会有下面的提示: 网站根目录在:/usr/local/var/www ...
- Pikachu-File Inclusion, Unsafe file download & Unsafe file upload
Pikachu-File Inclusion, Unsafe file download & Unsafe file upload 文件包含漏洞 File Inclusion(文件包含漏洞)概 ...
- Spring注解之@Autowired
前言 说起Spring的@Autowired注解,想必大家已经熟悉的不能再熟悉了.本文就针对此最常用的注解,梳理一下它的功能和原理,争取从源码的角度将此注解讲通,如有写的不准确的地方,欢迎各位园友拍砖 ...
- centos安装go环境
centos安装go环境 1,下载合适的go安装包 https://studygolang.com/dl 2 上传到 centos服务器的 /usr/local下然后解压 3.设置go的环境变量 ...
- python实现智能语音天气预报
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 飞奔的帅帅 PS:如有需要Python学习资料的小伙伴可以加点击下 ...