我正在使用最新的SignalR(v:1.1.1),并且试图每3秒钟定期简单地调用Hub方法。我在这里看到很多问题并且重复了这种方式,但GetHubContext
方法似乎没有返回类的正确实例,所以我不能调用该类的方法。您可以通过以下步骤复制的情况:SignalR(v.1.1.1)从服务器呼叫
MyHub.cs:
public class MyHub : Hub
{
public void SendMessage(string message)
{
Clients.All.triggerMessage(message);
}
}
的Global.asax:
Task.Factory.StartNew(() =>
{
while (true)
{
var myHub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
myHub.Clients.All.SendMessage("Hello World");
System.Threading.Thread.Sleep(3000);
}
})
.ContinueWith(t => { throw new Exception("The task threw an exception", t.Exception); }, TaskContinuationOptions.OnlyOnFaulted);
我想这是因为它得到简单。我认为这是正确的做法,但调试器从未碰到SendMessage
方法。有谁知道我错过了一些非常明显的东西?我只是试图每3秒钟从服务器安排一次到SignalR客户端的呼叫。
为什么还要在集线器中使用SendMessage()呢?只需在global.asax的循环中调用集线器实例的'triggerMessage'即可 – Julien