2017-02-10 6 views
0

Я пытаюсь воспроизвести поведение как клиентский браузер, но в C# (причина производительности). То, что я пытаюсь достичь, заключается в том, что для каждого нового события моя программа должна запускать серверную (Hub), которая затем уведомляет клиента. Вместо того, чтобы иметь цикл while, который будет каждый раз ударять по хаб-методу каждый раз, даже если нет сообщений nores, есть ли способ рассматривать его как триггер/обнаружение, чтобы после обнаружения сообщения выполнялся метод Hub? Надеюсь, что это имеет смыслСобытия триггера клиента 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(); 
} 

Снимок код Hub ниже:

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

     Clients.All.checkedIn(name); 
    } 
} 

, установив время цикла истины это означает, что это всегда будет вызывать сервер (метод Hub), который я не хочу. Если новые события срабатывают, то он должен ударить по хаб-методу. Есть ли способ как-то прослушать новое сообщение, но не выполнять, если сообщений не обнаружено?

ответ

0

Возможное решение:

string line; 
    while ((line = Console.ReadLine()) != "exit") 
    { 
     _hub.Invoke("GetByName", line).Wait(); 
    } 
Смежные вопросы