Использование HTTP

Объект sock. может работать как HTTP-сервер. Это значит, что при выполнении определённых условий отдельные сокеты переключаются в режим HTTP и выдают данные в стиле, соответствующем функциональности HTTP-сервера.

Некоторые сведения о HTTP-сервере в Tibbo BASIC/C уже приводились в разделе Работа с HTML.

Когда сокет находится в режиме HTTP, ваша программа не управляет принимаемыми данными (HTTP-запросами) и лишь иногда управляет передаваемыми данными (HTTP-ответом).

В простейшем случае файл, возвращаемый веб-браузеру, статический - «фиксированная» HTML-страница, графика или другой файл. Обработка такого статического файла вообще не требует вмешательства вашей программы. Достаточно настроить сокет(ы) на приём HTTP-запросов, а остальное сделает объект sock.

Но чаще всего приходится создавать динамическую HTML-страницу. Динамические страницы содержат фрагменты кода на Tibbo BASIC/C. Встретив такой фрагмент в файле, отправляемом браузеру, объект sock. выполняет этот код. Код, в свою очередь, совершает какое-то действие: например, формирует и отправляет браузеру динамические данные или переходит в другое место HTML-файла.

HTTP-сервер, встроенный в объект sock., понимает два типа запросов - GET и POST. Оба могут нести «HTTP-переменные», которые сервер извлекает и передаёт коду на Tibbo BASIC.

Поддерживаемые типы содержимого (файлов)

В настоящее время явно поддерживаются следующие расширения (типы) файлов:

РасширениеПоддержкаВозвращаемый Content-Type
.htmlВсе платформыtext/html
.txtВсе платформыtext/plain
.gifВсе платформыimage/gif
.jpgВсе платформыimage/jpg
.pngВсе платформыimage/png
.icoВсе платформыimage/ico
.bmpВсе платформыimage/bmp
.svg32-разрядные платформыimage/svg+xml
.js32-разрядные платформыtext/javascript
.json32-разрядные платформыapplication/json
.css32-разрядные платформыtext/css
.woff32-разрядные платформыfont/woff

HTML-файлы могут содержать исполняемый код Tibbo BASIC/C. Это позволяет создавать динамический HTML-вывод.

Все остальные типы файлов всегда статические и отправляются браузеру «как есть». Однако есть способ программно формировать и такие файлы - см. Подстановка URL.

Некоторые типы файлов поддерживаются только на 32-разрядных платформах. Тип платформы указан на странице каждой платформы.

Внимание

В настоящее время объект sock. может обращаться только к первым 65 534 байтам каждого файла, даже если реальный файл больше! Следите, чтобы все HTML-файлы (и другие файлы, которые будет возвращать встроенный сервер вашего устройства) не превышали 65 534 байт. Не путайте это с размером HTTP-вывода, который формирует HTTP-файл. Очень большой вывод может создаваться небольшим HTML-файлом (за счёт динамического формирования данных) - и это нормально.

Ограничение в 65 534 байта на самом деле относится к размеру скомпилированного HTML-файла. При компиляции проекта TIDE отделит статическую часть файла от фрагментов кода Tibbo BASIC/C. Значение имеет только размер скомпилированного файла.

Сжатие файлов (только 32-разрядные платформы)

На 32-разрядных платформах файлы всех типов, кроме HTML, можно прикреплять к проекту в сжатом виде - .gz.

Например, вместо picture.jpg можно сжать этот файл и прикрепить picture.jpg.gz. Веб-сервер TiOS обработает его правильно:

  • Когда браузер запрашивает picture.jpg, сервер сначала ищет этот файл, а если не находит - ищет picture.jpg.gz. Если второй файл найден, он отдаётся браузеру с заголовком «Content-Encoding: gzip» в ответе.
  • Сжатые HTML-файлы не поддерживаются. Дело в том, что HTML-файлы могут содержать исполняемый код Tibbo BASIC/C, поэтому TiOS должна хранить такие файлы в исходном, несжатом виде.

Дополнительные материалы:

В этом разделе:

Исходный материал Tibbo обновлён 12 сентября 2022Оригинал на docs.tibbo.com · Сообщить об ошибке