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

前端之家收集整理的这篇文章主要介绍了signalr – c#代码中的Call Hub方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的中心码:
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);

猜你在找的C#相关文章