Mat*_*rts 6 c# asp.net-mvc signalr
这与SignalR +通过动作方法向Hub发布消息有关,但我的问题有点不同:
我使用的是信号器版本0.5.2,使用集线器.在旧版本中,我们鼓励您在集线器上创建方法以向所有客户端发送消息,这就是我所拥有的:
public class MyHub : Hub
{
public void SendMessage(string message)
{
// Any other logic here
Clients.messageRecieved(message);
}
...
}
Run Code Online (Sandbox Code Playgroud)
所以在0.5.2中,我想向所有客户端发送消息(比如从控制器的某个地方发送消息).如何访问MyHub实例?
我看到引用的唯一方法是:
var hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hubContext.Clients.messageRecieved("hello");
Run Code Online (Sandbox Code Playgroud)
这很好,但我想在我的集线器上调用该方法.
Pau*_*aul 20
您可以使用静态方法执行此操作:
SignalR v.04-
public class MyHub : Hub
{
internal static void SendMessage(string message)
{
var connectionManager = (IConnectionManager)AspNetHost.DependencyResolver.GetService(typeof(IConnectionManager));
dynamic allClients = connectionManager.GetClients<MyHub>();
allClients.messageRecieved(message);
}
...
}
Run Code Online (Sandbox Code Playgroud)
SignalR 0.5+
public class MyHub : Hub
{
internal static void SendMessage(string message)
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.messageRecieved(message);
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后您可以这样调用:
MyHub.SendMessage("The Message!");
Run Code Online (Sandbox Code Playgroud)
关于SignalR API的好文章:http://weblogs.asp.net/davidfowler/archive/2012/05/04/api-improvements-made-in-signalr-0-5.aspx
由Paolo Moretti在评论中提供
| 归档时间: |
|
| 查看次数: |
24335 次 |
| 最近记录: |