15 c# signalr signalr-hub
这是我的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);
}
}
Run Code Online (Sandbox Code Playgroud)
我想用这段代码在另一个项目中调用此方法:
var pusher = new Pusher.Pusher();
pusher.PushToOtherInGroup("Test", new {exchangeTypeId, price});
Run Code Online (Sandbox Code Playgroud)
我想要调用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;
};
});
Run Code Online (Sandbox Code Playgroud)
我的问题是什么?
Dre*_*rsh 23
您无法像这样直接实例化和调用集线器类.SignalR运行时在Hub类周围提供了许多管道,您可以通过将其用作类似的"普通类"来绕过它.
从外部与SignalR集线器交互的唯一方法是实际获取一个IHubContext代表SignalR运行时集线器的实例.您只能在同一个过程中执行此操作,因此只要您的其他"项目"将使用SignalR代码运行,它就可以工作.
如果你的其他项目将在另一个进程中运行,那么你想要做的是暴露一种"伴侣"API,它是另一个SignalR中心或常规的旧Web服务(使用ASP.NET Web API)可以从其他应用程序调用来触发您想要的行为.无论您选择哪种技术,您都可能希望确保这一点,以便只有经过身份验证的应用程序才能调用它.
一旦您决定采用哪种方法,通过Pusher集线器发送消息的所有操作都将是:
// Get the context for the Pusher hub
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<Pusher>();
// Notify clients in the group
hubContext.Clients.Group(group).GetData(data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24440 次 |
| 最近记录: |