2014-01-06 41 views
0

在預定時間向客戶端廣播消息我想在特定服務器時間使用SignalR從服務器向所有客戶端廣播消息。這個廣播消息應該是自動的,所有的客戶端都會繼續監聽服務器方法,一旦我們到達服務器的預定時間,服務器就應該廣播消息。使用SignalR

但我沒有找到辦法。我通過從客戶端調用並將其廣播給所有客戶端,但不是自動地成功。

這是如何實現的。

+0

你可以每隔x秒從客戶端調用一次並查看isTimeToBroadCast? – Esen

+0

不確定你想用SignalR來做到這一點。實際上它與SignalR本身非常正交。編寫間隔運行的代碼實際上就是你需要做的。可能有一個.NET庫可以用來安排代碼在某個時間運行(儘管它永遠不會是實時的) – davidfowl

回答

0

您可以在您的集線器類中添加一個定時器,並以所需的時間間隔向每個客戶端進行廣播。

1

首先,你需要某種形式的樞紐:

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 
} 

希望這有助於!