Используйте покадровый обмен сообщениями

На этой странице описано, как отправлять сообщения на стороне клиента из дополнения, работающего в iframe боковой панели , в дополнение, работающее в iframe основного экрана . Передача сообщений между фреймами происходит только на стороне клиента, поэтому доставка сообщений происходит практически мгновенно.

Чтобы отправить сообщение:

  • Для перехода с боковой панели на главную сцену используйте метод notifyMainStage() .
    await sidePanelClient.notifyMainStage("YOUR_MESSAGE");
  • Для перехода от основной сцены к боковой панели используйте метод notifySidePanel() .
    await mainStageClient.notifySidePanel("YOUR_MESSAGE");

Длина payload должна соответствовать установленному предельному размеру.

Для получения сообщения дополнение должно подписаться на функцию обратного вызова frameToFrameMessage . В следующем примере кода показано, как подписаться на функцию обратного вызова frameToFrameMessage :

sidePanelClient.on('frameToFrameMessage', (arg: FrameToFrameMessage) => {
    // YOUR_CODE
});

Дополнение "Animation" на GitHub содержит полный пример покадровой передачи сообщений. После запуска анимации боковая панель уведомляет основную сцену всякий раз, когда пользователь изменяет ввод . Основная сцена также подписывается на коллбэк frameToFrameMessage для получения обновленного состояния.

Примечания

  • Сообщения, отправляемые одним участником между кадрами, видны только этому же участнику. Чтобы отправлять сообщения или состояние другим участникам, узнайте, как делиться состоянием дополнения .

  • Попытка доставки сообщения выполняется только один раз. Для получения сообщений панель приема должна быть открыта, а приложение должно подписаться на функцию обратного вызова до отправки сообщения.