Skip to main content
Ниже собраны практические сценарии для браузерного клиента, msm-components, WebSocket API, REST API и web-компонентов. Примеры рассчитаны на приложение, в котором уже подключён msm-framework-js и доступен глобальный MSM2.

1. Минимальная HTML-страница

Подключите библиотеку до своего кода и создайте один экземпляр клиента:
Замените wss://example.com на WebSocket-адрес своего приложения. Если клиент подключается без аргумента, он определяет адрес по текущему origin.

2. Вызов backend-сервиса и получение JSON

invokeAndGetJson$ возвращает RxJS Observable, поэтому ответ читается через subscribe:

3. Тот же вызов через msm-components

Сервисные helper-ы превращают Observable в Promise и возвращают полный ответ клиента:
Аргументы backend-метода всегда передаются массивом. Если метод ожидает JSON-строку, используйте JSON.stringify(payload):

4. Вызов репозитория

5. Обновление bean

updateBean обновляет значения bean, зарегистрированного с помощью @Component или @Service. Например, можно обновить DummyBean:

6. React-компонент с загрузкой данных

Пример паттерна из React-приложения: подписка создаётся в useEffect, а при размонтировании отменяется.

7. SSR-перерисовка страницы

После изменения состояния или данных можно запросить повторный SSR-рендер:
Для частичного обновления элемента используйте renderElement:

8. Подписка на пользовательское событие

Backend может публиковать события в собственный destination внутри /topic/**:

9. Переводы через TranslationManager

10. Клиентская маршрутизация

11. Web Components в HTML

Компоненты должны быть зарегистрированы библиотекой до использования в DOM:

12. Работа с событиями и формой

Для DOM-формы можно получить объект payload и отправить его в сервис:

13. Авторизация и выход

AuthHelper возвращает Observable для HTTP-операций авторизации:
Для production-приложения не храните пароль в JavaScript и используйте HTTPS.

14. REST-вызов универсального сервиса

WebSocket не требуется для простого HTTP-запроса:

15. Загрузка изображения

Файлы отправляются как multipart/form-data:

16. Обработка ошибок и повтор запроса

Оберните Promise-вызов в try/catch, а сетевые повторы ограничьте несколькими попытками: