Веб: HTTP, WebSocket, MQTT, браузер
Web Client для запросов наружу, Web Server для своего API и пульта в браузере, MQTT для датчиков, Web Render TOP для страницы как картинки.
TouchDesigner работает с HTTP в обе стороны и показывает веб-страницы текстурой, а значит, достаёт до внешних сервисов и даёт управлять собой удалённо.
| Оператор | Для чего |
|---|---|
| Web Client DAT | Запрос наружу: GET, POST, PUT, DELETE и другие методы; REST API, скачивание, вебхуки |
| Web Server DAT | Свой HTTP- и WebSocket-сервер внутри проекта, при желании с TLS |
| WebSocket DAT | Клиент WebSocket |
| MQTT Client DAT | Обмен с устройствами через MQTT-брокер |
| Web Render TOP | Рендер веб-страницы в текстуру |
| JSON DAT | Выбрать нужное из ответа по запросу JSONPath — DAT |
Запрос наружу
Web Client DAT асинхронный: запрос уходит, ответ приходит в колбэк,
и кадр не ждёт. Отправляют кнопкой Request или
op('web1').request(url, 'GET'), который возвращает номер соединения.
Есть Timeout и страница Authentication с Basic, Digest, OAuth1 и OAuth2.
def onResponse(webClientDAT, statusCode, headerDict, data, id):
import json
payload = json.loads(data)
op('table_out')[1, 'value'] = payload['temperature']
return
Точные аргументы колбэков есть в заготовке, которую DAT создаёт вместе с собой. Так берут погоду и время для инсталляции, данные с сервера площадки, ответы LLM и генеративных сервисов, шлют телеметрию.
У любого внешнего запроса должны быть тайм-аут и поведение по умолчанию. Инсталляция, которая ждёт сервер, чтобы показать картинку, однажды покажет пустой экран.
Свой сервер
Web Server DAT поднимает HTTP и WebSocket на порту из Port, а на странице
Secure включается TLS с ключом и сертификатом. Работа идёт в колбэках:
onHTTPRequest получает запрос и заполняет ответ, onWebSocketOpen,
onWebSocketReceiveText и onWebSocketClose обслуживают клиентов.
def onHTTPRequest(webServerDAT, request, response):
response['statusCode'] = 200
response['statusReason'] = 'OK'
response['data'] = op('state').text
return response
На этом делают пульт в браузере телефона вместо VNC, приём вебхуков, страницу для зрителей с голосованием или вводом текста и API проекта для соседних машин. MQTT Client DAT подключается к брокеру, подписывается на темы и публикует сообщения — так инсталляция обменивается данными с датчиками, микроконтроллерами и умным зданием.
Страница как текстура
Web Render TOP открывает страницу в отдельном процессе Chromium (CEF) и получает
картинку через общую память. Так в кадр попадают готовые библиотеки графиков и
карт, сложная вёрстка и живые дашборды. В ветке 2025.30000 браузер обновлён до
Chromium 132, появились DPI Scaling и таблица для правки заголовков запроса,
чтобы рендерить страницы с авторизацией, а один кэш двумя Web Render TOP больше
не делят — второй выдаст ошибку. Это полноценный браузер и нагружает систему
соответственно, поэтому статичное рендерят один раз.
Web Server DAT, HTML-страница со слайдерами и WebSocket на приём — и у оператора пульт без установки чего-либо, без MIDI и OSC-приложений.
Нашли в статье ошибку, устаревшее или непонятное место?