Long polling в 1С без Apache и IIS
- long-polling
- http
- разработка
- a4
Встроенный HTTP-приёмник в Расширенной редакции принимает запросы от расширения 1С через polling. Apache и IIS на стенде разработчика не нужны.
Чтобы AI-ассистент мог обращаться к данным 1С, нужна точка интеграции. Штатный способ это опубликовать HTTP-сервис через Apache или IIS. На стенде разработчика это тяжело: каждый раз ставить веб-сервер, настраивать виртуальный каталог, дёргать после правки. Под Linux и macOS интеграция отдельно болезненная.
В Расширенной редакции есть встроенный long polling: процесс mcp-1c-advanced поднимает HTTP-приёмник, а компактное расширение в 1С общается с ним через polling. Apache и IIS не нужны.
Как это работает
Бинарник запускается с флагом --listen :9090 и встаёт на TCP-порт. Это обычный Go-овский http.Server, без cgo и без обращений к платформенным библиотекам. Работает в любом окружении где запускается само ядро Платформы: Windows, Linux, macOS.
Со стороны 1С устанавливается расширение MCP_Polling. Оно периодически обращается к этому порту, забирает задачи и возвращает результаты. Базы помечаются как канал опроса через схему URL: --base "MyBase=poll://localhost:9090". Это сигнал что доступ к базе идёт через канал опроса, а не напрямую через COM или IBConnection.
Запуск
mcp-1c-advanced --base "acc=poll://localhost:9090" \
--listen :9090 \
--user Администратор --password ""
После старта процесс ждёт обращений от расширения 1С. Дальше связка работает прозрачно: AI-ассистент шлёт MCP-запрос к серверу, сервер ставит его в очередь, расширение в 1С забирает и выполняет, ответ возвращается.
Когда это полезно
Локальная разработка. Поднимать Apache на каждой машине дорого по времени. Под macOS штатной интеграции с 1С почти нет, под Linux она шаткая. Встроенный приёмник снимает это препятствие.
Тестовый стенд. Long polling тянет одно соединение без необходимости настраивать IIS. Полезно когда стенд живёт в контейнере без полноценной публикации сервисов.
Конвейер CI. Собрали дамп, запустили процесс, прогнали интеграционные тесты, погасили процесс. Никаких внешних веб-серверов, никаких настроек публикации.
Ограничения
Один процесс, один порт. Кластеризация делается через несколько процессов с разными --listen.
TLS терминируется снаружи. На localhost он не нужен, для среды эксплуатации остаётся nginx или IIS как точка терминации сертификатов. Встроенный приёмник на роль боевого веб-сервера не претендует.
Аутентификация через параметры сеанса 1С (--user, --password). Отдельный промежуточный обработчик аутентификации не реализован.
Сравнение со штатной публикацией
В штатной публикации HTTP-сервиса нужны Apache или IIS, конфиг default.vrd, виртуальный каталог, перезапуск веб-сервера при изменении сервиса. В случае long polling правка кода это правка модуля расширения. Время цикла «изменил, проверил» сокращается с минут до секунд.
В среде эксплуатации остаётся обычный nginx или IIS как точка терминации TLS и балансировка. Long polling здесь не конкурент, а альтернатива для разработки и интеграционных стендов.