当前位置: 首页 > news >正文

银河盛世网站建设vr超市门户网站建设

银河盛世网站建设,vr超市门户网站建设,口碑营销方案,江西省建设协会网站一、什么是集线器hubs通过SignalR的集线器hubs中定义的方法#xff0c;服务器可以调用连接中的客户端定义的方法#xff0c;而客户端也可以调用服务器端集线器中定义的方法。SignalR负责实现了客户端和服务器之间的实时通信。二、配置SignalR的hubsSignalR通过在Startup.Conf… 一、什么是集线器hubs  通过SignalR的集线器hubs中定义的方法服务器可以调用连接中的客户端定义的方法而客户端也可以调用服务器端集线器中定义的方法。SignalR负责实现了客户端和服务器之间的实时通信。二、配置SignalR的hubs  SignalR通过在Startup.ConfigureServices中调用services.AddSignalR()来配置中间件服务。  将 SignalR 功能添加到 ASP.NET Core 应用程序时通过在Startup.Configure方法中调用app.UseSignalR来设置 SignalR 路由。app.UseSignalR(routes {  routes.MapHubBaseHub(/Hub);}); 三、创建集线器Hubs  通过继承Hub类来创建集线器类并添加public修饰的方法。可以通过特性[HubMethodName]来修改方法的名称。public async Task SendMessage(string user,string message){await Clients.All.SendAsync(ReceiveMessage, user, message);}  注意   客户端只能调用集线器类中定义的public的方法。每次客户端访问服务器的集线器类的时候都是在新的对象实例上运行的所以不能将状态存储在集线器类中。SignalR的代码是异步模式的所以集线器中的方法也都是异步的。四、参数和返回类型  将集线器类和客户端接收代码改为如下所示public class paramsEntity{public string user { get; set; }public string message { get; set; }}public async Task SendMessage(paramsEntity param){await Clients.All.SendAsync(ReceiveMessage, param);}//接收服务器端消息ReceiveMessage的处理程序connection.on(ReceiveMessage, function (param) {  if (param.user)    $(#content).append(param.user :);  if (param.message)    $(#content).append(param.message :);});//发送消息至服务器端SendMessage方法connection.invoke(SendMessage, { user, message }).catch(function (err) {  return console.error(err.toString());});  通过运行可以发现SignalR会通过序列化和反序列化来处理复杂的参数和返回类型。如果客户端传递的参数和服务器端不一致会导致方法无法被匹配到而报错以下错误。Microsoft.AspNetCore.SignalR.HubException: Failed to invoke SendMessage due to an error on the server.  所以使用自定义对象作为参数更加的灵活多变。五、Hub的对象  1、Context  Hub类具有一个上下文Context包含连接中的以下属性以及方法。属性描述ConnectionId获取由 SignalR 分配的连接的唯一 ID。每个连接都有一个连接 IDUserIdentifier获取用户标识符。 默认情况下SignalR 使用ClaimTypes.NameIdentifier与连接ClaimsPrincipal关联的作为用户标识符。User获取与ClaimsPrincipal当前用户关联的。Items获取可用于在此连接的范围内共享数据的键/值集合。数据可以存储在此集合中它将在不同的集线器方法调用中持久保存。Features获取连接上的可用功能的集合。目前在大多数情况下不需要此集合因此不会对其进行详细介绍。ConnectionAborted获取一个CancellationToken它将在连接中止时通知。方法描述GetHttpContext返回连接HttpContext的null如果连接不与 HTTP 请求关联则为。对于 HTTP 连接可以使用此方法来获取 HTTP 标头和查询字符串等信息。Abort中止连接。2、Clients  Hub类的Clients属性包含服务器和客户端之间通信的方法和属性。属性描述All在所有连接的客户端上调用方法Caller在调用集线器方法的客户端上调用方法Others在所有连接的客户端上调用方法但调用方法的客户端除外方法描述AllExcept在所有连接的客户端指定的连接除外上调用方法Client在特定连接的客户端上调用方法Clients在多个特定连接的客户端上调用方法Group对指定组中的所有连接调用方法GroupExcept对指定组中的所有连接调用方法指定的连接除外 Groups在多组连接上调用方法OthersInGroup对一组连接调用方法而不包括调用该集线器方法的客户端User对与特定用户关联的所有连接调用方法Users对与指定用户相关联的所有连接调用方法  表中的每个属性或方法都返回一个SendAsync包含方法的对象。 SendAsync方法允许你提供要调用的客户端方法的名称和参数。六、强类型的hub  使用SendAsync的时候需要传入字符串来指定调用客户端的方法这就会导致拼写错误等问题引发程序运行错误。  通过使用强类型HubT将客户端的方法约定为接口这样Hub的Clients的将会禁用Sendasync方法而只能调用我们约定的接口方法。 public interface IHub { Task ReceiveMessage(string user, string message); Task ReceiveMessage(string message); } public class BaseHub : HubIHub {public async Task SendMessage(string user, string message) {await Clients.All.ReceiveMessage(user, message); } } 七、处理连接事件  SignalR的hub提供OnConnectedAsync和OnDisconnectedAsync虚拟方法来管理和跟踪连接。 重写OnConnectedAsync虚拟方法以便在客户端连接到集线器时执行操作如将其添加到组。public override async Task OnConnectedAsync(){await Groups.AddToGroupAsync(Context.ConnectionId, SignalR Users);await base.OnConnectedAsync();}  重写OnDisconnectedAsync虚拟方法以便在客户端断开连接时执行操作。 如果客户端故意断开连接例如connection.stop()通过调用则exception参数将为null。 但是如果客户端由于错误例如网络故障而断开连接则exception参数将包含描述失败的异常。public override async Task OnDisconnectedAsync(Exception exception){await Groups.RemoveFromGroupAsync(Context.ConnectionId, SignalR Users);await base.OnDisconnectedAsync(exception);}原文链接https://www.cnblogs.com/xwc1996/p/11530341.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.yutouwan.com/news/491980/

相关文章:

  • 建设银行的网站特点网站后台html编辑器
  • php网站实例wordpress 微信接口
  • 策划书中网站制作怎么写网站建设所用的工具
  • 定制网站建设广告作文素材网站
  • 新建的网站百度搜不到最全的提交网站入口大全
  • 怎样设计网站网站开发环境和运行环境
  • 微信端网站页面设计wordpress 统计2次
  • 建设银行泰安分行网站wordpress标签随机调用
  • 网站建设公司的公众号如何做网站豆瓣
  • 北京网站定制报价南宁建站方案
  • 中山企业手机网站建设做神马网站优
  • e时代速递搜索引擎网站建设网站规划对网站建设起到
  • 西部数据wordpress如何优化网络速度
  • 龙岗建设网站公司建设工程公司 网站
  • 酒店网站建设范文城北区工程建设信息网站
  • 天津专业做网站公司微信小程序定位权限怎么打开
  • 试述网站建设的步骤个人养老保险app下载
  • 班级网站首页设计个人网站 做外贸
  • 唐四薪php网站开发答案莆田网站建设方案报价
  • 网站免费正能量不下载南昌英文网站建设
  • 青岛营销型网站推广平面设计公司广告语
  • 东营免费网站制作南宁网站建设找建站通
  • 做平台的网站投票网站制作免费
  • 南通网站制作方案定制学做电商的网站
  • 石景山建网站高端网站开发秦帝
  • 烟台福山建设规划局网站沈阳男科医院哪家好一些
  • 菲律宾网站网站建设wordpress 标签图标
  • 不用服务器做网站网页制作基础教程电子教材
  • 工商局网站如何做网登wordpress 如何搬家
  • 用html做卖珠宝的网站photoshop安卓版