2017-02-10 10 views
0

私はクライアントブラウザのような動作を複製しようとしていますが、C#(パフォーマンスの理由)です。私が達成しようとしているのは、受け取ったすべての新しいイベントに対して、私のプログラムがサーバー側(Hub)をトリガーしてクライアントに通知するということです。メッセージがなくても毎回繰り返しハブメソッドにヒットするwhileループを持つのではなく、メッセージを検出してからハブメソッドを実行するようにトリガー/検出として扱う方法はありますか?これは、以下のクライアントコードの意味SignalRクライアントのトリガーイベント

スナップショットになりホープ:

IHubProxy _hub; 
string url = @"http://localhost:8080/"; 
var connection = new HubConnection(url); 
_hub = connection.CreateHubProxy("PersonHub"); 
connection.Start().Wait(); 

//client side method 
_hub.On("checkedIn", x => Console.WriteLine(x)); 

Console.WriteLine("Enter Person Name"); 
var answer = Console.ReadLine(); 
while (true) // Better way doing this? trigger or detect new message? 
{ 
    //server side method 
    _hub.Invoke("GetByName", answer).Wait(); 
} 

を下記ハブコードのスナップショット:

[HubName("PersonHub")] 
public class PersonHub: Hub 
{ 
    public Person GetByName(string name) 
    { 
     //logic and etc ... 

     Clients.All.checkedIn(name); 
    } 
} 

trueにwhileループを設定することで、これはこれは常にサーバーを呼び出します私がしたくないサイドメソッド(Hubメソッド)。新しいイベントがトリガされた場合、ハブメソッドにヒットする必要があります。何らかの方法で新しいメッセージを待ち受けますが、メッセージが検出されなかった場合は実行しない方法はありますか?

答えて

0

可能な解決策は次のとおりです。

string line; 
    while ((line = Console.ReadLine()) != "exit") 
    { 
     _hub.Invoke("GetByName", line).Wait(); 
    } 
関連する問題