在預定時間向客戶端廣播消息我想在特定服務器時間使用SignalR從服務器向所有客戶端廣播消息。這個廣播消息應該是自動的,所有的客戶端都會繼續監聽服務器方法,一旦我們到達服務器的預定時間,服務器就應該廣播消息。使用SignalR
但我沒有找到辦法。我通過從客戶端調用並將其廣播給所有客戶端,但不是自動地成功。
這是如何實現的。
在預定時間向客戶端廣播消息我想在特定服務器時間使用SignalR從服務器向所有客戶端廣播消息。這個廣播消息應該是自動的,所有的客戶端都會繼續監聽服務器方法,一旦我們到達服務器的預定時間,服務器就應該廣播消息。使用SignalR
但我沒有找到辦法。我通過從客戶端調用並將其廣播給所有客戶端,但不是自動地成功。
這是如何實現的。
您可以在您的集線器類中添加一個定時器,並以所需的時間間隔向每個客戶端進行廣播。
首先,你需要某種形式的樞紐:
public class MyHub : Hub {}
然後,您可以用任何你想要做的客戶端或連接到該集線器。然後你需要一些類型的循環類發送到你的集線器(你也可以在集線器中做一個靜態的定時器,但是我們會把它作爲一個單獨的類來完成)。
public class Looper
{
public Timer Interval
public Looper(TimeSpan interval)
{
Interval = new Timer(Loop, null, TimeSpan.Zero, interval);
}
private static void Loop(object state)
{
GlobalHost.ConnectionManager.GetHubContext<ChatHub>().Clients.All.executeYourMethod();
}
}
現在,我們需要在一些地方實例化這個類,我們會盡我們的輪轂爲靜態內:
public class MyHub : Hub
{
public static Looper MyInterval = new Looper(TimeSpan.FromSeconds(1)); // Send every 1 second
}
希望這有助於!
你可以每隔x秒從客戶端調用一次並查看isTimeToBroadCast? – Esen
不確定你想用SignalR來做到這一點。實際上它與SignalR本身非常正交。編寫間隔運行的代碼實際上就是你需要做的。可能有一個.NET庫可以用來安排代碼在某個時間運行(儘管它永遠不會是實時的) – davidfowl