Я пытаюсь воспроизвести поведение как клиентский браузер, но в 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), который я не хочу. Если новые события срабатывают, то он должен ударить по хаб-методу. Есть ли способ как-то прослушать новое сообщение, но не выполнять, если сообщений не обнаружено?