加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

signalr – c#代码中的Call Hub方法

发布时间:2020-12-15 03:50:59 所属栏目:百科 来源:网络整理
导读:这是我的中心码: public class Pusher : Hub,IPusher { readonly IHubContext _hubContext = GlobalHost.ConnectionManager.GetHubContextPusher(); public virtual Task PushToOtherInGroup(dynamic group,dynamic data) { return _hubContext.Clients.Gro
这是我的中心码:
public class Pusher : Hub,IPusher
        {
            readonly IHubContext _hubContext = GlobalHost.ConnectionManager.GetHubContext<Pusher>();

   public virtual Task PushToOtherInGroup(dynamic group,dynamic data)
        {
            return _hubContext.Clients.Group(group).GetData(data);
        }
      }

我想在另一个项目中使用以下代码调用此方法:

var pusher = new Pusher.Pusher();
       pusher.PushToOtherInGroup("Test",new {exchangeTypeId,price});

我想调用PushToOtherInGroup,当调用方法我没有得到任何错误,但是推动器不起作用.

这是我的Ui代码:

$(function() {
    hub = $.connection.pusher;
    $.connection.hub.start()
        .done(function() {
            hub.server.subscribe('newPrice');
            console.log('Now connected,connection ID=' + $.connection.hub.id);
        })
        .fail(function() { console.log('Could not Connect!'); });
});

  (function() {
            hub.client.GetData = function (data) {
                debugger;
            };
        });

我的问题是什么?

解决方法

你不能像这样直接实例化和调用一个hub类.通过SignalR运行时,在Hub类周围提供了很多管道,您可以通过将其用作像这样的“普通的类”来绕过.

从外部与SignalR集线器交互的唯一方法是实际获取代表从SignalR运行时的集线器的IHubContext的实例.您只能在同一个过程中执行此操作,因此只要您的其他“项目”正在运行,并使用SignalR代码即可.

如果您的另一个项目将在另一个进程中运行,那么您想要做的就是暴露出一种“伴侣”API,它是另一个SignalR集线器或一个常规的旧Web服务(使用ASP.NET Web API),您可以可以从这个其他应用程序调用来触发你想要的行为.无论您选择哪种技术,您都可能希望确保这一点,以便只有经过身份验证的应用程序可以调用它.

一旦您决定要采取哪种方式,您将通过Pusher hub发送消息的所有操作将是:

// Get the context for the Pusher hub
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<Pusher>();

// Notify clients in the group
hubContext.Clients.Group(group).GetData(data);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读