2016-11-24 19 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ループで永遠にはまりますので、私は、別のスレッドにSend()移動方法を示唆している

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); 
     } 
    } 
} 

:ちょうどwhile(true)ループ内のメソッド内のコードをラップ。

+0

Answer.itありがとうございます。しかし、その後、私は例外を持っています。私はそれを解決するのですか? Uncaught TypeError:未定義のプロパティ 'client'を読み取ることができません – creator

+1

@ G.Thirunavukkarasuこれは[別の質問](http://stackoverflow.com/questions/14146913/signalr-cannot-read-property-client-of-undefined)ですクライアント側でより多くのSignalRをターゲットにしています:) – meJustAndrew

+0

Andrewに感謝します。私はそれを確認します – creator

関連する問題