Я уверен, что многие из вас сталкивались с этим пониманием в самом начале своей карьеры программиста.
Предположим, существует связь между сервером и клиентом. Цель клиента состоит в том, чтобы действовать, когда было внесено изменение в переменную на сервере.
Стандартная модель требует, чтобы клиент неоднократно проверял наличие значение переменной и действует при изменении значения.
Сервер
string variable = "nothing";
Клиент
every 1 second {
string variable = fetchData(Server, "variable");
if (variable == "something") {
performAction();
}
}
Проблема в том, что сотни тысяч циклов теряются, если переменная изменяется только один раз в день, и если клиент является мобильным устройством, он разряжает батарею и снижает производительность.
An альтернативный способ заключается в том, чтобы клиент бесконечно слушал сервер, а сервер отправлял переменную, когда она изменилась.
Сервер
every 1 second {
if (variable == "something") {
sendData(Client, variable);
variable = "nothing";
}
}
Клиент
didReceiveData(variable) {
performAction(variable);
}
Таким образом, циклы на клиенте сокращаются до n раз, когда изменяется переменная. Я ищу наивысший уровень эффективности на стороне клиента (для одного изменения в день за один цикл в день) и наименьшую возможную задержку (почти мгновенную) между изменением и действием. Кроме того, на следующем этапе разработки я хотел бы сделать каждого клиента сервером, а это означает, что pu sh уведомления не могут масштабироваться.
Я бы предположил, что Peer- 2-Peer, но можно ли заставить его работать на примере выше? Существуют ли другие методы или типы подключения?
Извините за произвольный язык программирования.