Каталог решений - Пробуем отправлять уведомления с сервера на клиент в 8.3.26

Пробуем отправлять уведомления с сервера на клиент в 8.3.26

Пробуем отправлять уведомления с сервера на клиент в 8.3.26

В наличии

Новый механизм УведомленияКлиента из тестовой версии платформы 8.3.26.

Категория:

Описание

Введение

Некоторое время назад 1С выпустила тестовые релизы новой версии платформы 8.3.26. Среди прочего, в ней был реализован новый механизм "Уведомления клиента".

 

Теория

В глобальном контексте появилось новое свойство УведомленияКлиента, содержащее три метода:

  • ПодключитьОбработчик — назначает обработчик для входящего уведомления в клиентском коде;
  • ОтключитьОбработчик — отключает ранее подключенный обработчик;
  • ОтправитьУведомление — отправляет уведомление клиентским сеансам с сервера.

Уведомление может быть отправлено всем активным сеансам, либо определенному множеству сеансов. Для этого в ОтправитьУведомление можно передать массив номеров сеанса.

Также, в типе ФоновоеЗадание появилось новое свойство НомерРодительскогоСеанса. Его можно использовать, например, для отправки уведомлений о прогрессе выполнения длительной фоновой операции.

Разработчики заявляют, что механизм уведомлений клиента гарантирует доставку уведомления — уведомление не будет утеряно из-за временного обрыва соединения со стороны клиентского приложения или при падении рабочего процесса сервера 1С.

 

Пример использования

В качестве примера реализуем простейший мессенджер:

 

 

Подготовка клиентского кода

Пропишем подключение и отключение обработчика:

 

 

Реализуем сам обработчик:

 

 

Реализация отправки и доставки сообщений

В обработчике кнопки "Отправить сообщение" ничего необычного — спрашиваем текст и вызываем некоторую серверную процедуру:

 

 

А как отправить сообщение уже с сервера другим сеансам, в которых открыта эта же обработка? Записывать данные в какой-то регистр и стучаться в него раз в несколько секунд? Писать тонну кода для отправки и приема из системы взаимодействия? Нет, все гораздо проще:

В процедуре я подготовил произвольную структуру данных сообщения (в отличие от системы взаимодействия, я могу передавать не только строку) и вызвал УведомленияКлиента.ОтправитьУведомление. Т.к. я не передавал массив с номерами сеансов, уведомление отправится всем активным сеансам ИБ (включая текущий).

 

Демонстрация


has been added to your cart:
Оформление заказа