Какие типы соединений позволяют серверу отправлять данные клиенту без запроса клиента в первую очередь? - PullRequest
0 голосов
/ 17 января 2020

Я уверен, что многие из вас сталкивались с этим пониманием в самом начале своей карьеры программиста.

Предположим, существует связь между сервером и клиентом. Цель клиента состоит в том, чтобы действовать, когда было внесено изменение в переменную на сервере.

Стандартная модель требует, чтобы клиент неоднократно проверял наличие значение переменной и действует при изменении значения.

Сервер

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

Извините за произвольный язык программирования.

...