library Browser/Event

Broadcast
<p>Класс, позволяющий пересылать сообщения между вкладками</p><pre> // ... tabMessage = new TabMessage(); // подписываемся на изменение статуса загрузки tabMessage.subscribe("upload-status", function (event, data){ switch (data.get('status')) { case "start": { log("start upload", data.get('file')); break; } case "finish": { log("start finish", data.get('file'), data.get('result')); break; } case "progress": { log("start progress", data.get('file'), ); break; } } }); // ... // при старте загрузки с одной вкладки отправляем статус на другие вкладки self.getChildControlByName("uploadBtn").subscribe("onactivated", function (event){ self.upload(); var record = self.getUploadInfo(); tabMessage.notify("upload-status", record); }); </pre> <p>Уведомление об открытом документе</p><pre> // Пример кода, который выполняется при открытии документа require(["Browser/_Event/Broadcast/Message"], function (TabMessage) { var tabMessage = new TabMessage(); var documentId = 245; var eventName = "document.open:%id".replace("%id", documentId); tabMessage.subscribe(eventName, function (event, data) { if (data.readOnly) { return; } // Нашалогика. Решаем кто и как будет реагировать. Например, покажем пользователю открытый документ* console.warn("Документ уже открыт на другой вкладке."); alert("Вот открытый вами документ."); }); tabMessage.notify(eventName, {readOnly: true}) ;}); </pre> <p></p>
Server
<p>Серверная шина событий</p>
1/24/2021Санников К.А.