Что происходит с клиентами в изоморфном одностраничном приложении при развертывании нового кода сервера?

Я думаю, подразумевается, что при реализации изоморфного одностраничного приложения вы также разработали частный API, который ваш клиент будет использовать для обновлений.

Мой вопрос заключается в том, что когда вы отправляете изменения кода на свой сервер, там будут «устаревшие» клиенты, которые все еще запускают ваш старый клиентский код, а затем поражают ваш API с возможно несовместимыми параметрами и предположениями.

Я вижу два возможных решения:

  1. Версия вашего API. Ваш клиентский код должен будет попасть в API с его текущим номером версии; код вашего сервера раздувается логикой управления версиями.
  2. Реализуйте какой-нибудь вид сокетов/push-сообщений, чтобы сообщать клиентам о необходимости полного обновления страницы, чтобы получать последний развернутый код всякий раз, когда происходит развертывание. (Сохраняются ли эти подключения даже после развертывания сервера?)

(Управление версиями API необходимо, если у вас также есть клиенты мобильных приложений для поддержки, но только для веб-сайта кажется, что это много ненужной работы.)

Кто-нибудь еще сталкивался или решал эту проблему? Есть ли другие варианты, которые мне не хватает?


person thien    schedule 18.07.2015    source источник


Ответы (2)


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

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

person Mike G    schedule 02.08.2015

Я думаю поставить приложение на график обслуживания на несколько часов, которые вам нужны для обновления вашего кода. Сообщите своему пользователю об этом заранее. И выберите время, когда пользователь менее активен.

person a45b    schedule 02.08.2015