[ASP.NET Core 3.0学习笔记] - SignalR

SignalR简介

SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用

  1. Web Socket
  2. Server Sent Events
  3. Long Polling

作为底层传输方式.

SignalR基于这三种技术构建, 抽象于它们之上, 它让你更好的关注业务问题而不是底层传输技术问题.

SignalR这个框架分服务器端和客户端, 服务器端支持ASP.NET Core 和 ASP.NET; 而客户端除了支持浏览器里的javascript以外, 也支持其它类型的客户端, 例如桌面应用.

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?view=aspnetcore-3.0&tabs=visual-studio
https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-3.0
solenovex的SignalR讲解 https://www.cnblogs.com/cgzl/p/9515516.html

使用

Step1

使用ASP.NET Core 3.0框架。添加signalr.js
C#项目中创建一个继承Microsoft.AspNetCore.SignalR.Hub的类,用于做传输控制。
配置SignalR。在Startup.cs文件中services.AddSignalR()

app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
                endpoints.MapHub<ChatHub>("/chatHub");
            });

其中ChatHub是实现的继承类。/chatHub与客户端代码js文件里的连接项保持一致即可。

Step2

客户端代码的.cshtmlhtml文件里需要引用两个js文件。一个是SignalR的signalr.js,一个是跟客户端业务相关的如chat.js
chat.js中,需要创建SignalR对象并绑定事件。这里的"/chatHub"与上文保持一致。

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

这里需要注意的就是这几种模式

connection.on();
connection.start().then();
connection.invoke();
  1. connection.on();用于接收消息。以方法名字符串的形式调用。
  2. connection.start().then();用于连接建立成功后的处理。
  3. connection.invoke();用于发送消息。调用方式与 connection.on();基本一致,都是通过方法名字符串加参数列表的形式。

剩下的就是与业务相关的前端页面信息及逻辑了。
ps:connection的使用可以查看signalr.js代码。

服务端与客户端

服务端

命名空间为Microsoft.AspNetCore.SignalR
通过继承Hub类派生控制器类。通过IHubContext<xxxHub>实现依赖注入,无需使用全局单一实例。
使用Clients.User(userName)Clients.Group(groupName)进行用户与组的控制。
使用Context.ConnectionId管理连接id。
使用自定义对象参数来确保向后兼容。

客户端

命名空间Microsoft.AspNetCore.SignalR.Client
.Net客户端。Java客户端。JavaScript客户端。

流式处理Stream

ASP.NET Core SignalR 支持从客户端传输到服务器以及从服务器传输到客户端。 这适用于数据片段随着时间的推移而发生的情况。 流式传输时,每个片段一旦变为可用,就会发送到客户端或服务器,而不是等待所有数据都可用。
connection.stream。一般SignalR连接,使用connection.on来添加监听器,但是在使用流式传输的时候,改用connection.stream方法。从使用效果来看,stream有点像是invoke与on的组合结果。通过invoke调用服务端方法,并接收对应的流数据。stream里添加方法,closenextcompleteerror来应对各种需求。

https://www.cnblogs.com/lwqlun/p/9839305.html

配置文件

身份验证和授权

MessagePack

日志与诊断

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章