#fluid-framework
#fluid-framework
Вопрос:
Я получил пример HelloWorld для нормальной работы. Но как только я остановил и перезапустил сервер, клиенты вышли из синхронизации — даже когда я установил согласованный документ (т. Е. location.hash = "12345"
).
Настройка createNew=false
сломала приложение (без кубиков — буквально).
И я получаю много повторяющихся ошибок:
[start:server] error: Connect Document error: {} {"messageMetaData":{"documentId":"1608237690408","tenantId":"tinylicious"},"label":"winston","timestamp":"2020-12-17T20:45:13.160Z"}
[start:server] info: Disconnect of 60c72737-3e05-4bc7-bf9b-f7ca6439a431 from room {"messageMetaData":{"documentId":"1608237690408","tenantId":"tinylicious"},"label":"winston","timestamp":"2020-12-17T20:45:13.161Z"}
Поддерживает ли Fluid этот сценарий? Или я делаю что-то не так?
Ответ №1:
Служба tinylicious может поддерживать отключение и включение с долговременными данными, но на самом деле это тестовая служба. При перезапуске службы вы, вероятно, захотите выбрать новый documentId.
createNew
это более интересная история. Приложение Hello World является несколько надуманным примером. В общем случае разработчик приложения получит сигнал от пользователя о том, что необходимо создать новый документ. Подумайте о документах Google.
«Создать новый документ Google» -> createNew === true
«Открыть существующий документ Google» -> createNew === false
Однако для сценария Hello World мы хотим иметь как можно меньше кода. Мы, конечно, не хотим выписывать целую схему управления документами. Поэтому мы полагаемся на маленькую хитрость: если вы вставляете URL-адрес с определенным идентификатором документа, мы предполагаем, что вы загружаете существующий документ, в противном случае мы создадим для вас новый.
Вот что делает приведенное ниже!
Вы увидите эффекты в URL-адресах, которые выглядят примерно так: http://localhost:8080/#1608592296522
let createNew = false;
if (location.hash.length === 0) {
createNew = true;
location.hash = Date.now().toString();
}
const documentId = location.hash.substring(1);
document.title = documentId;
Комментарии:
1. ОК. Я искал «тестовый» пример, который я мог бы протестировать в бою (т. е. Сбой / перезагрузка). Кроме того, я полагаю, что для «долговечности» нам понадобится база данных или что-то в этом роде. Я не вижу никакой базы данных в примерах.
2. Сервер routerlicious подходит лучше. Он хорошо протестирован, масштабируем и достаточно долговечен. Я считаю, что потоки devops могли бы использовать еще немного работы.