该SignalR维基介绍了如何在广播从中心外的枢纽.但是,这会调用客户端操作:
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.Group(group).addMessage(message);
Run Code Online (Sandbox Code Playgroud)
有没有办法调用Hub操作,理想情况是以强类型方式?例如
GetHubContext<MyHub>().Invoke(h => h.Say(message))
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过使用.NET客户端连接到集线器,但是当调用代码与集线器在同一服务器上时,这似乎是错误的.
派对迟到但是,是的,有.
该stockticker样本NuGet包 做到这一点(尽管它并不完全使用它!):
基本上,您公开服务器端集线器的静态实例以进行调用.
在样本中,模式是:
public class StockTicker
{
// Singleton instance
private readonly static Lazy<StockTicker> _instance = new Lazy<StockTicker>(
() => new StockTicker(GlobalHost.ConnectionManager.GetHubContext<StockTickerHub>().Clients));
...
public static StockTicker Instance
{
get
{
return _instance.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
...
然后可以从任何地方调用它,几乎任何时候!:
StockTicker.Instance.OpenMarket();
Run Code Online (Sandbox Code Playgroud)
asp.net网站上的博客文章也涵盖了同样的例子
| 归档时间: |
|
| 查看次数: |
2176 次 |
| 最近记录: |