С каждым новым релизом разработчики платформы все больше и больше удивляют нас нововведениями. Интеграции с соц. сетями, боты для общения с пользователями, пауза:) И новая, 26-я платформа не стала исключением. У нас появляется новый механизм вызова клиента с сервера. И называется он: МенеджерУведомленийКлиента (ClientNotificationManager).
Сама реализация очень проста и состоит из 3-х методов:
- ПодключитьОбработчик
- ОтправитьУведомление
- ОтключитьОбработчик
Подключаются и отключаются обработчики на клиенте, а отправка уведомления доступна только на сервере.
Рассмотрим на примере. Напишем "Привет, Мир!", но только не в консоль, а другому пользователю.
Создадим обработку с кнопкой "Поздороваться" и строковым полем, где можно будет выбрать получателя:
Получателями у нас будут админы и пользователи, а искать их мы будем по роли:
Метод ОтправитьУведомление принимает 3 параметра: Ключ, Данные, Адресаты.
Ключ - строка, по сути идентификатор рассылки. Именно по этому ключу можно подписываться и отписываться от рассылки.
Данные - произвольные данные, которые можно передать с сервера на клиент.
Адресаты - массив, элементами которого является число. Но не простое, а номер сеанса. Вот этот параметр вовсе не обязательный. Если передать пустой массив, или не указать параметр, сообщение будет разослано во все сеансы, которые подписаны на рассылку.
В нашем случае по роли мы находим активные сеансы и добавляем их в рассылку. Или же не добавляем, если пользователь не указан.
Теперь надо подключить обработчик. В модуле приложения напишем такой код:
Тут все просто. При начале работы мы подписываемся на оповещения по ключу "Приветствие", при завершении работы - отписываемся.
Ну и надо создать общий модуль клиента для обработки описания оповещения:
Это обработчик, который вызывается через описание оповещения, принимает 2 параметра:
- Данные - произвольный - объект, который передается 2-ым параметром метода ОтправитьУведомление
- ДополнительныеПараметры - произвольный - объект, который передается через описание оповещения
Еще один вариант использования - отображение прогресса фонового задания. В библиотеке длительных операций есть коллбэки с отображением прогресса, но работают они через опрос сервера, и мы не можем поставить ежесекундное отображение статуса без потери производительности. К слову, в библиотеке длительных операций зашит механизм, который с каждой итерацией опроса сервера увеличивает срок до следующего опроса. Новый механизм не требует опроса сервера (это будет видно по счетчику вызовов на гифке).
Создадим форму для запуска фонового задания:
Описываем методы:
При открытии формы подписываемся на обработчик "Процесс", и описываем его описание оповещения.
Фоновое задание будет вызывать паузу, поэтому мы передадим количество секунд для паузы, и номер нашего сеанса, чтобы не рассылать состояние всем без исключения:
Здесь все также, вызвали паузу, оповестили:
Я очень рад, что платформа развивается и обрастает полезными фишками. И при чтении списка изменений хочется скачать платформу и попробовать новые возможности.
Другие мои статьи: