INTEGRITY Документация

Web Core SDK

Подписаться на RSS

2026-08-24

RealtimeKit Web Core 2.0.2

Улучшения

  • Сгенерированная документация API теперь корректно определяет имена классов, что повышает точность подсказок типов для пользователей TypeScript.
  • Запуск записи, которая уже выполняется, теперь возвращает код ошибки 1005 вместо общего кода ошибки 1000. Если ваш onError колбэк обрабатывает код ошибки 1000 для этого случая, обновите его, чтобы обрабатывать 1005.

Исправления

  • Исправлена ошибка транспиляции Babel, которая могла возникать при использовании сборок ES2015, содержащих RequestError.
  • Исправлено восстановление сессии после тайм-аутов SFU. Теперь участники могут продолжать слышать и видеть остальных после кратковременного тайм-аута API SFU.
  • Исправлено пакетное создание media consumers: теперь поддерживаются сетки участников до 100 человек на странице вместо прежних 24.

2026-07-17

RealtimeKit Web Core 2.0.1

Исправления

  • Исправлены сборки ES5, содержащие VERSION_PLACEHOLDER в бандле вместо фактической версии SDK.
  • Исправлен сбой инициализации SDK при неудачной первой попытке сокет-соединения, из-за которого также не создавалось хранилище плагинов. Теперь SDK повторяет попытку создания хранилища в зависимости от состояния сокет-соединения.

2026-06-18

RealtimeKit Web Core 2.0.0

Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 2.0.0 или более поздней версии.

Это мажорный релиз с критическими изменениями. Несколько устаревших API были удалены, а API плагинов полностью переработаны. Прежде чем обновляться, внимательно ознакомьтесь с руководством по миграции ниже.

API плагинов: полный редизайн

Плагины больше не загружаются с сервера автоматически. Теперь конфигурации плагинов задаются при инициализации SDK через defaults.plugins.

До (v1.x):

// plugins were loaded via API in SDK internally
const meeting = await RealtimeKitClient.init({
  authToken,
});

// Server-hosted plugins were auto-populated
const plugin = meeting.plugins.all.get(pluginId);

// Plugin rendered in an iframe managed by the SDK
plugin.addPluginView(iframeElement, 'plugin-main');

// Permissions checked via meeting.self.permissions.plugins.canStart / canClose

После (v2.0):

Компонент плагина представляет собой любой HTMLElement. Можно использовать пользовательский элемент, компонент фреймворка, смонтированный в контейнер, или iframe. В примере ниже в качестве плагина внедрен совместный текстовый редактор:

const editor = document.createElement('iframe');
editor.src = 'https://rustpad.io/#WKLJaD';
editor.style.width = '100%';
editor.style.height = '100%';
editor.style.border = 'none';

const meeting = await RealtimeKitClient.init({
  authToken,
  defaults: {
    plugins: [
      {
        id: 'collaborative-editor', // SDK prefixes this with {meetingId}: to create the namespaced plugin.id
        name: 'Collaborative Editor',
        icon: 'https://example.com/editor.png',
        permissions: {
          canActivate: true,
          canDeactivate: true,
        },
        component: editor,
      },
    ],
  },
});

// Plugin is registered and available
const plugin = meeting.plugins.all.get(pluginId);

// Activate — state is synced across all participants
await plugin.activate();

Полное руководство по созданию собственных плагинов см. в Создание собственных плагинов. Если вам нужно записывать содержимое плагина, вам нужно создать собственное приложение для записи.

Основные изменения:

  • Новый экспорт типов: ClientPluginConfig, ClientPluginPermissions.
  • Плагин id теперь работает в отдельном пространстве имён: SDK добавляет префикс к указанному вами id с {meetingId}: чтобы создать внутренний pluginId.
  • Состояние активации и деактивации плагина теперь синхронизируется через коллаборативное хранилище (__rtk_plugins__) вместо отдельных socket-сообщений.
  • Теперь у плагинов есть component свойство (любое HTMLElement) вместо рендеринга на основе iframe через addPluginView.
  • Разрешения для отдельных плагинов (plugin.permissions.canActivate / plugin.permissions.canDeactivate) заменяют старый глобальный meeting.self.permissions.plugins.canStart / meeting.self.permissions.plugins.canClose.

Удалены API плагинов:

  • plugin.addPluginView(iframe, viewId), передайте HTMLElement как component в ClientPluginConfig взамен.
  • plugin.removePluginView(viewId), обрабатывается автоматически UI Kit.
  • plugin.enable(), используйте plugin.activate().
  • plugin.disable(), используйте plugin.deactivate().
  • plugin.sendIframeEvent(), удалено. Взаимодействуйте напрямую со своим компонентом.
  • plugin.baseURL, удалено. Плагины больше не размещаются на сервере.
  • plugin.picture, используйте plugin.icon.
  • plugin.description, plugin.organizationId, plugin.tags, plugin.type, plugin.staggered, plugin.private, plugin.published, plugin.createdAt, plugin.updatedAt, удалено. Больше не применяется.
  • plugin.config (PluginConfig): удален. Понятие манифеста плагина отсутствует.
  • meeting.self.permissions.plugins.canStart, используйте plugin.permissions.canActivate.
  • meeting.self.permissions.plugins.canClose, используйте plugin.permissions.canDeactivate.
  • modules.devTools.plugins (локальная конфигурация плагина для разработки): используйте defaults.plugins с component указывающий на ваш локальный элемент.

Удалены устаревшие API

Клиент:

  • meeting.joinRoom(), используйте meeting.join().
  • meeting.leaveRoom(), используйте meeting.leave().

Чат:

  • meeting.chat.getMessagesByUser(userId), используйте meeting.chat.fetchPublicMessages() с соответствующими фильтрами.
  • meeting.chat.getMessagesByType(type), используйте meeting.chat.fetchPublicMessages() с соответствующими фильтрами.
  • meeting.chat.getMessages(timestamp, size, reversed), используйте meeting.chat.fetchPublicMessages() или meeting.chat.fetchPrivateMessages().
  • meeting.chat.searchMessages(query, filters), используйте meeting.chat.fetchPublicMessages() или meeting.chat.fetchPrivateMessages().
  • meeting.chat.pinned (getter): используйте meeting.chat.fetchPinnedMessages().

Разрешения (meeting.self.permissions):

  • permissions.produceVideo, используйте permissions.canProduceVideo.
  • permissions.produceAudio, используйте permissions.canProduceAudio.
  • permissions.produceScreenshare, используйте permissions.canProduceScreenshare.
  • permissions.waitingRoomType, используйте permissions.waitingRoomBehaviour.
  • permissions.canChangeParticipantRole, используйте permissions.canChangeParticipantPermissions.
  • permissions.canChangeTheme, удалено (всегда возвращало false).
  • permissions.canPresent, проверьте отдельные canProduceAudio, canProduceVideo, canProduceScreenshare.
  • permissions.requestProduce, проверьте отдельные разрешения на доступ к медиаустройствам для CAN_REQUEST значения.
  • permissions.acceptPresentRequests, используйте permissions.acceptStageRequests.
  • permissions.maxScreenShareCount, используйте meeting.self.config.maxScreenShareCount.
  • PermissionPreset.fromResponse(), используйте PermissionPreset.init().
  • PermissionPreset.default(), используйте PermissionPreset.init().

Участники:

  • meeting.participants.disableAudio(participantId), используйте meeting.participants.joined.get(participantId).disableAudio().
  • meeting.participants.disableVideo(participantId), используйте meeting.participants.joined.get(participantId).disableVideo().
  • meeting.participants.kick(participantId), вызовите kick напрямую для этого участника.
  • participant.clientSpecificId, используйте participant.customParticipantId.

Connected Meetings:

  • meeting.connectedMeetings.supportsConnectedMeetings, удалено. Теперь проверки разрешений выполняются детально через meeting.self.permissions.connectedMeetings.

Улучшения

  • Более быстрое переподключение: при разрывах только сокета, когда транспорты WebRTC остаются исправными, теперь пропускается полная пересборка транспорта. Producers регистрируются заново, а существующие Consumers перепривязываются, что значительно сокращает время переподключения.
  • Участники остаются видимыми при переподключении: плитки участников не исчезают и не появляются заново во время кратковременного сбоя сокета, а остаются в сетке, обеспечивая бесперебойную работу.
  • Исправление двойного звука: устранена проблема, из-за которой другие участники могли слышать двойной звук от переподключившегося участника, вызванная тем, что устаревшие объекты producer не удалялись вовремя.
  • Устойчивость переподключения Socket: теперь Socket поддерживает до 50 попыток переподключения с экспоненциальной задержкой и джиттером (ранее 10), что обеспечивает до четырёх минут повторных попыток при пропадании интернета.
  • Улучшения Store: StoreManager теперь поддерживает refresh(name) чтобы повторно получить данные хранилища с сервера, а также зарезервированные имена хранилищ (__rtk_plugins__) защищены от создания пользователем.

Исправления

  • Исправлена ошибка, из-за которой сокет не переподключался при разрыве соединения дольше 30 секунд.

2026-05-28

RealtimeKit Web Core 1.5.1

Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 1.2.0 или более поздней версии.

Возможности

  • Добавлен отдельный код ошибки 0014 для сбоев медиасоединения (WebRTC) при присоединении к комнате, что упрощает разграничение сбоев медиа и сбоев сокета или сигнализации.

Улучшения

  • Сбои инициализации и подключения из Client.init() и meeting.join() теперь показывают конкретные коды ошибок и понятные сообщения вместо общих или вложенных ошибок.
  • Логи телеметрии теперь сжимаются с помощью gzip, если браузер поддерживает CompressionStream API, обеспечивая коэффициент сжатия примерно 10:1. Старые браузеры и React Native используют несжатый JSON с меньшим размером пакетов.

Исправления

  • Исправлена ошибка в регулярном выражении, из-за которой флаг видеомидлвара Safari удалялся некорректно, что могло нарушать обработку видео в Safari.
  • Исправлена проблема, из-за которой ClientError объекты вкладывались друг в друга при повторных попытках SDK выполнить неудавшиеся запросы API. Это приводило к вложенным сообщениям об ошибках, дублированию onError колбэков и избыточных window событий об ошибках.

Удалённые API

  • Удалена сторонняя служба флагов. meeting.__internals__.features теперь считается устаревшим и будет удалён в одном из будущих релизов.

2026-04-20

RealtimeKit Web Core 1.4.0

Совместимость: Лучше всего работает с RealtimeKit Android Core 2.0.0+ и RealtimeKit iOS Core 2.0.0+.

Возможности

  • Добавлено meeting.__internals__.authToken чтобы предоставлять токен аутентификации, что улучшает интеграцию между Web Core и UI Kit для будущих функций и улучшений.

Исправления

  • Проактивно исправлена ошибка, из-за которой участники с включённым simulcast не могли включить камеру или микрофон из-за сбоев SDP в браузере Chrome версии 148+.

Улучшения

  • SDK теперь использует *.realtime.cloudflare.com базовый URI вместо устаревшего dyte.io базовый URI.
  • Доработана обработка ошибок для корректного перехвата и отображения кодов ошибок при сбоях инициализации SDK, сбоях подключения к комнате и других ошибках.

2026-03-31

RealtimeKit Web Core 1.3.0

Возможности

  • Поддержка simulcast теперь доступна всем клиентам RealtimeKit. Настройте её для каждого участника в Preset через RealtimeKit Dashboard, Preset API с помощью config.media.video.simulcast поле или пока инициализация SDK.
  • Добавлена поддержка видео 4K UHD в медиапродукции (настраивается в Preset и API). Если камера не поддерживает 4K, используется максимальное доступное разрешение.

2026-03-10

RealtimeKit Web Core 1.2.5

Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 1.1.1 или более поздней версии.

Улучшения

  • Добавлены ограничения на количество попыток при сбоях ICE-соединения, чтобы избежать бесконечных попыток подключения и повысить надежность.
  • Улучшена обработка ошибок при подключении к комнате: сообщения об ошибках стали более подробными и информативными.
  • Ошибки подключения к комнате теперь стабильно возникают при блокировке сетевого соединения файрволами или при недоступности TURN-серверов.

Исправления

  • Исправлена ошибка в Connected Meetings, из-за которой ID пиров не обновлялись при переключении между комнатами. Теперь ID пиров корректно назначаются для каждой сессии комнаты.

2026-01-30

RealtimeKit Web Core 1.2.4

Совместимость: Лучше всего работает с RealtimeKit Web UI Kit 1.1.0 или более поздней версии.

Новые API

Добавлена поддержка пагинации чата с помощью следующих методов:

  • meeting.chat.fetchPinnedMessages - Получение закрепленных сообщений с сервера.
  • meeting.chat.fetchPublicMessages - Получение публичных сообщений с сервера.
  • meeting.chat.fetchPrivateMessages - Получение личных сообщений с сервера.

Улучшения

  • Добавлены комментарии JSDoc для всех публичных методов и классов, что улучшает подсказки для разработчиков.
  • Операции с сообщениями чата (редактирование, удаление, закрепление) теперь доступны всем клиентам RealtimeKit без дополнительной настройки.
  • pinMessage и unpinMessage события на meeting.chat теперь генерируются надежно.
  • Закрепление сообщений (meeting.chat.pin и meeting.chat.unpin) теперь доступен всем участникам.

Удалённые API

Удалены нерабочие API канала чата для упрощения RealtimeKit SDK. Чат встречи (meeting.chat) продолжает работать в полном объёме.

  • Удалено meeting.self.permissions.chatChannel.
  • Удалено meeting.self.permissions.chatMessage. Используйте meeting.self.permissions.chatPublic и meeting.self.permissions.chatPrivate взамен.
  • Удалено meeting.chat.channels.
  • Удалено meeting.chat.sendMessageToChannel.
  • Удалено meeting.chat.markLastReadMessage.
  • Удалены события: channelMessageUpdate, channelCreate, а также channelUpdate от meeting.chat.

Изменения API

  • Следующие методы больше не принимают третий необязательный channelId параметр:
    • meeting.chat.editTextMessage(messageId, message)
    • meeting.chat.editImageMessage(messageId, imageFile)
    • meeting.chat.editFileMessage(messageId, file)
    • meeting.chat.editMessage(messageId, messagePayload)
    • meeting.chat.deleteMessage(messageId)

Устаревшие функции

Следующие методы считаются устаревшими из-за ограничений масштабируемости (не более 1,000 последних сообщений):

  • meeting.chat.messages - Загружает только недавние сообщения и новые сообщения, отправленные после присоединения.
  • meeting.chat.getMessagesByUser - Используйте новые методы получения данных для масштабируемой загрузки сообщений.
  • meeting.chat.getMessagesByType - Используйте новые методы получения данных для масштабируемой загрузки сообщений.
  • meeting.chat.getMessages - Используйте meeting.chat.fetchPublicMessages или meeting.chat.fetchPrivateMessages взамен.
  • meeting.chat.pinned - Используйте meeting.chat.fetchPinnedMessages взамен.
  • meeting.chat.searchMessages - Используйте meeting.chat.fetchPublicMessages или meeting.chat.fetchPrivateMessages взамен.

Известные ограничения

  • Закреплённые сообщения не поддерживаются в личных чатах.

2026-01-05

RealtimeKit Web Core 1.2.3

Исправления

  • Исправлена ошибка, из-за которой у пользователей, присоединившихся к встрече с выключенными звуком и видео и затем запустивших демонстрацию вкладки, при остановке демонстрации экрана повреждался SDP, что блокировало последующие действия, такие как включение звука или видео.

    Возникла ошибка:

    InvalidAccessError: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Failed to set remote audio description send parameters for m-section with mid='<N>'
    
  • Исправлена ошибка, при которой ожидание RealtimeKitClient.initMedia не вернул медиатреки

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

    const media = await RealtimeKitClient.initMedia({
      video : true,
      audio: true,
    });
    
    const { videoTrack, audioTrack } = media;
    
  • Исправлена ошибка, из-за которой неопределенная переменная вызывала TypeError: Cannot read properties of undefined (reading 'getValue') при получении медиаданных из-за состояния гонки.

2025-12-17

RealtimeKit Web Core 1.2.2

Исправления

  • Исправлена ошибка, из-за которой на устройствах Android не работало переключение между передней и задней камерами
  • Исправлена логика выбора устройств для более эффективной приоритизации медиаустройств
  • Добавлена поддержка PIP для Реакции

2025-11-18

RealtimeKit Web Core 1.2.1

Исправления

  • Исправлена ошибка, из-за которой не выполнялся выбор медиаустройства по умолчанию.
  • Исправлен бандл SDK: теперь он включает browser.js вместо ошибочной поставки index.iife.js в версии 1.2.0.

Улучшения

  • Теперь, если предпочитаемое устройство не задано, внешние медиаустройства получают приоритет над встроенными.

2025-10-30

RealtimeKit Web Core 1.2.0

Возможности

  • Добавлена поддержка настройки симулкаста через initMeeting:

    initMeeting({
      overrides: {
        simulcastConfig: {
          disable: false,
          encodings: [{ scaleResolutionDownBy: 2 }],
        },
      },
    });
    

Исправления

  • Исправлена ошибка, из-за которой в отдельных крайних случаях видеопотоки удалённых участников не отображались во время пагинации сетки.
  • Исправлена ошибка, из-за которой участники не могли переключить микрофон, если первый микрофон в списке не работал.

Критические изменения

  • Поддержка устаревшего медиадвижка удалена. Если ваша организация была создана до 1 марта 2025 года и вы обновляетесь до этой версии SDK или более поздней, у вас могут возникнуть проблемы с записью. Обратитесь в поддержку, чтобы перейти на новый медиадвижок Cloudflare SFU и сохранить работоспособность записи.

2025-08-26

RealtimeKit Web Core 1.1.7

Исправления

  • Исправлена ошибка, из-за которой событие смены спикера возникало, даже если активный спикер не менялся.
  • Устранены последствия изменения поведения при переключении микрофона в последних версиях Google Chrome.
  • Добавлено deviceInfo логи, чтобы улучшить возможности отладки для React Native.
  • Исправлена ошибка, из-за которой для одного и того же пира ставилось в очередь сразу несколько media consumers, что позволило оптимизировать использование ресурсов.

2025-08-14

RealtimeKit Web Core 1.1.6

Улучшения

  • Внутренние изменения, упрощающие и ускоряющие отладку проблем с потреблением медиа.

2025-08-04

RealtimeKit Web Core 1.1.5

Исправления

  • Улучшена поддержка React Native для AudioActivityReporter с корректной дискретизацией звука.
  • Исправлена ошибка, из-за которой пользователи не могли создавать опросы.
  • Исправлена ошибка, из-за которой выход из встречи занимал больше 20 секунд.

2025-07-17

RealtimeKit Web Core 1.1.4

Исправления

  • Функция прямой трансляции теперь доступна всем бета-пользователям.
  • Исправлена работа сцены в прямой трансляции: видео пиров участников не воспроизводилось у организаторов при их выходе на сцену.
  • Исправлены проблемы с подключением и выходом зрителей на сцене Livestream.

2025-07-08

RealtimeKit Web Core 1.1.3

Исправления

  • Исправлена ошибка, из-за которой пользователи, присоединившиеся без видео, не могли включить его во время встречи.

2025-07-02

RealtimeKit Web Core 1.1.2

Исправления

  • Исправлен крайний случай в крупных встречах, когда уже присутствующие участники не могли слышать или видеть только что присоединившихся пользователей.

2025-06-30

RealtimeKit Web Core 1.1.0-1.1.1

Возможности

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

Новый API

  • Отправка сообщений между встречами:

    meeting.participants.broadcastMessage("<message_type>", { message: "Hi" }, {
      meetingIds: ["<connected_meeting_id>"],
    });
    

Улучшения

  • Уменьшено время отображения видео недавно подключившихся участников при массовом подключении.
  • Добавлена поддержка нескольких встреч на одной странице в RealtimeKit Core SDK.

2025-06-17

RealtimeKit Web Core 1.0.2

Исправления

  • Улучшена обработка ошибок при медиаоперациях.
  • Исправлена ошибка, из-за которой активные участники со включенным звуком или видео не отображались в списке активных участников.

2025-05-29

RealtimeKit Web Core 1.0.1

Исправления

  • Исправлены проблемы с первоначальной настройкой интеграции Cloudflare RealtimeKit.
  • Исправлены проблемы с присоединением к встрече и медиаподключением.
  • Улучшена обработка медиатреков.

2025-05-29

RealtimeKit Web Core 1.0.0

Возможности

  • Первый релиз Cloudflare RealtimeKit с поддержкой групповых звонков, вебинаров, прямых трансляций, опросов и чата.