Начало работы
Что такое интеграционный аддон?
Интеграционный аддон — это папка, которую пользователь выбирает при установке. В ней как минимум должен быть файл manifest.json. В зависимости от категории аддона также могут присутствовать:
index.js— код воркера, выполняемый в песочнице VM- Статические веб-файлы (
index.html, CSS, изображения) для UI оверлея, виджета или приложения - Медиафайлы для простого воспроизведения оверлея
Приложение сохраняет путь установки в Config.data.addonsInstalled[].path. Аддоны не встраиваются в основной исполняемый файл приложения.
Архитектура
| Слой | Роль |
|---|---|
| Папка аддона | manifest.json + index.js и/или веб-ресурсы |
| Главный процесс | Запускает воркер, проверяет разрешения, мостит HTTP/config IPC, обслуживает статические маршруты |
| Песочница воркера | GenerateContext() + vm.runInContext — глобальные объекты, доступные коду аддона |
Код аддона должен использовать глобальные имена из контекста песочницы. import SDK StreamKit+ внутри VM не поддерживается.
Установка аддона
- Соберите или подготовьте папку с
manifest.json(и необходимыми файлами). - Откройте Настройки → раздел, соответствующий
typeвашего аддона (Платформы, Оверлей, Виджеты, Приложения). - Выберите Установить из папки и укажите каталог.
- Подтвердите запрошенные разрешения при установке.
- Включите аддон и настройте параметры, если воркер вызывает
GenerateConfig().
Для аддонов-воркеров на TypeScript: скомпилируйте в index.js перед установкой или установите папку с выходными файлами webpack.
Минимальный пример воркера
await network.endpoints.create('hook', 'POST', 'onHook');
events.On('onHook', ({ body }) => {
console.log('Webhook payload', body);
return { ok: true };
});
URL эндпоинта:
http://localhost:{WEB_SERVER_PORT}/addon/{addonId}/hook
Замените {addonId} на id из manifest.json, а {WEB_SERVER_PORT} — на порт локального веб-сервера приложения.
Структура проекта (рекомендуемая)
MyOrg-my-stream-addon/
├── manifest.json # id: "MyOrg/my-stream-addon"
├── index.js # или index.ts + tsconfig.json (сборка в index.js)
├── logo.png # иконка, указанная в manifest
├── index.html # если нужен веб-UI
└── ... # дополнительные ресурсы из web_contents
Связанные материалы
- manifest.json — обязательные поля, в том числе
id - Публикация и релизы — файлы GitHub-релиза (
main.zip,manifest.json, иконка) - Настройка TypeScript — типы из
@rocketman-streamkit/types - Разрешения — объявляйте только то, что нужно