2016-11-24 53 views
0

我是SignalR的新手。我需要將信息從SignalR自動發送到所有連接的客戶端,而無需客戶端輸入?我如何從Signalr定期接收消息給所有客戶端,無需客戶端輸入?

上面的過程必須重複遞歸嗎?

可能嗎?

沒有客戶端輸入,SignalR可以重複自動發送消息給客戶端?

這是我的JavaScript cleint代碼:

$(function() { 
    var chat = $.connection.timehub; 
    $.connection.hub.start(); 
    chat.client.broadcastMessage = function (current) { 
     var now = current; 
     console.log(current); 
     $('div.container').append('<p><strong>' + now + '</strong></p>'); 
    } 
}; 

,這是我Timehub

public class timehub : Hub 
{ 
    public void Send(string current) 
    { 
     current = DateTime.Now.ToString("HH:mm:ss:tt"); 
     Clients.All.broadcastMessage(current); 

     System.Threading.Thread.Sleep(5000); 
     Send(current); 
    } 
} 

,這是我Owin啓動類:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.MapSignalR(); 

    } 
} 

誰能給我一個解決方案?

回答

1

如果您將繼續像現在一樣遞歸調用Send()方法,您將得到一個stackoverflow異常。只是包裝方法中的代碼在while(true)循環:

public class timehub : Hub 
{ 
    public void Send() 
    { 
     while(true) 
     { 
      var current = DateTime.Now.ToString("HH:mm:ss:tt"); 
      Clients.All.broadcastMessage(current); 
      System.Threading.Thread.Sleep(5000); 
     } 
    } 
} 

我建議移動Send()方法到另一個線程,因爲當前線程將得到這個while循環永遠困。

+0

謝謝你的answer.it工作正常..但之後,我得到一個exception.how我解決它嗎? Uncaught TypeError:無法讀取未定義的屬性'client' – creator

+1

@ G.Thirunavukkarasu這是[另一個問題](http://stackoverflow.com/questions/14146913/signalr-cannot-read-property-client-of-undefined)其中目標更多SignalR在客戶端:) – meJustAndrew

+0

謝謝安德魯。我會檢查 – creator

相關問題