首页 > 其他分享 >SignalR 外部调用自定义Hub类的方法,Clients为null

SignalR 外部调用自定义Hub类的方法,Clients为null

时间:2023-07-11 17:24:01浏览次数:34  
标签:await 自定义 Hub onlineClientManager Clients IHubContext dataHub clientInfoProvider

这是因为外部调用的类的对象和你连接的Hub类的对象,这两个对象 不!一!样!

解决方法
在自定义的Hub类中,注入IHubContext对象,然后在方法中调用IHubContext对象来向前端推送数据

    public class DataHub : AbpCommonHub, ITransientDependency
    {
        public IOnlineClientManager onlineClientManager { get; set; }
        public IOnlineClientInfoProvider clientInfoProvider { get; set; }
        private IHubContext<DataHub> dataHub { get; } // 就是这个东西!!!!!!!

        public DataHub(IOnlineClientManager onlineClientManager, IOnlineClientInfoProvider clientInfoProvider, IHubContext<DataHub> dataHub) // 前两个是继承 AbpCommonHub 来的,可以直接继承AbpHubBase,就没它俩了,最后一个需要
            : base(onlineClientManager, clientInfoProvider)
        {
            this.onlineClientManager = onlineClientManager;
            this.clientInfoProvider = clientInfoProvider;
            this.dataHub = dataHub; // !!
        }

        public async Task SendData()
        {
            await dataHub.Clients.All.SendAsync("sendTracks", GlobalInstance.data);
        }

        public async Task SendHistoricalData()
        {
            await dataHub.Clients.All.SendAsync("sendHistoricalTrack", GlobalInstance.dataHis);
        }

        public override async Task OnConnectedAsync()
        {
            await base.OnConnectedAsync();
        }

        public override async Task OnDisconnectedAsync(Exception exception)
        {
            await base.OnDisconnectedAsync(exception);
        }
    }

标签:await,自定义,Hub,onlineClientManager,Clients,IHubContext,dataHub,clientInfoProvider
From: https://www.cnblogs.com/echo-lovely/p/17545350.html

相关文章

  • 创建属于自己的github、使用git提交、更新代码至github、写好readme
    1.在github上创建一个Repository点击github网站,你可以用你的邮箱先注册一个账号。点击New,转到创建一个repository的界面,如下图所示,你可以填写你的Repositoryname、description、选择是否公开、增添一个默认的Reademe等等,一般都可以选择上。2.使用git提交、更新代码至git......
  • 自定义参数类型断言装饰器
    代码frominspectimportsignaturefromfunctoolsimportwrapsdeftypeassert(*ty_args,**ty_kwargs):defdecorate(func):ifnot__debug__:returnfuncsig=signature(func)#获取函数签名bound_types=sig.bind_parti......
  • arcgis pro自定义ribbon
     参考:https://pro.arcgis.com/en/pro-app/2.9/get-started/customize-the-ribbon.htm......
  • 自定义hook函数
    什么是hook?——本质是一个函数,把setup函数中使用的CompositionAPI进行了封装。类似于vue2.x中的mixin。自定义hook的优势:复用代码,让setup中的逻辑更清楚易懂。 创建hook3文件夹新建usePoint.js文件(文件名以userxxx命名) app.vue<template><button@cl......
  • springcloud -sentinel 用户自定义限流错误处理(仅限限流异常,其他异常请使用fallback属
    pom依赖<!--SpringCloudailibabanacos--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>......
  • pytest + yaml 框架 -49.allure报告自定义内容
    前言v1.4.0版本支持allure报告自定义内容用例添加allure描述用例中可以通过dynamic添加以下内容allure.dynamic.featureallure.dynamic.linkallure.dynamic.issueallure.dynamic.testcaseallure.dynamic.storyallure.dynamic.titleallure.dynamic.description在t......
  • 面试进阶齐飞!Github一天万赞的阿里Java系统性能优化有多牛?
    前两天在知乎上看到一个问答,说的是:一个Java程序员具备什么样的素质和能力才可以称得上高级工程师?这个问题也引发了我的一些思考,可能很多人会说,“作为高级工程师,基础得过硬、得熟练掌握一门编程语言、至少看过一个优秀开源项目的源代码、有过高并发/性能优化的工作经验、沟通能力......
  • 第3章 自定义控件2
    3强大的附加属性所以你正在构建一个令人惊喜的新应用程序,你需要一种在现有控件中没有直接支持的行为。你确信除了创建子类并为自己创建一堆工作外,没有其他方法来扩展现有的控件功能。是时候创建子类了,对吗?WPF提供了一项创新功能,称为附加属性,它可以用于向现有控件添加行为。这些......
  • Camstar表格自定义写js,实现单元格合并。
     效果: ......
  • app直播源代码,自定义顶部搜索栏显示隐藏
    app直播源代码,自定义顶部搜索栏显示隐藏1、wxml代码 <viewclass="bar-box"style="height:{{navBarHeight}}px;">  <viewwx:if="{{show}}"class="level"style="margin-top:{{barHeight}}px;">    <viewclass=&......