SP-документы

Динамические документы, рассылаемые сервером, были изобретены в фирме Netscape. Соединение клиент-сервер остается открытым после первоначальной передачи данных, и сервер периодически посылает клиенту новые данные, обновляя отображение документа. SP-поведение делается возможным за счет некоего специального программирования со стороны сервера и осуществляется при помощи специального компонента MIME-стандарта, принятого в компьютерной индустрии для передачи через Интернет мультимедийных документов.

Тип передачи данных multipart/mixed
Как мы уже отмечали выше в этой главе при обсуждении CP-документов, HTTP-сервер передает броузеру клиента данные, состоящие из двух частей: заголовка, описывающего документ, и следующего за ним собственно документа. MIME-тип документа – это часть HTTP-заголовка.

Обычно перед отправкой HTМL-документа сервер включает в заголовок Content-type:
text/html.

Заменив этот тип содержимого на multipart/mixed, вы можете послать HTML-документ или несколько документов, разбив их на несколько частей, а не одним куском. Однако броузеры, основанные на движке Mozilla, такие как Netscape и Firefox, понимают эту запись в заголовке, сообщающую, что документ состоит из нескольких частей, и правильно на нее реагируют.


Другие броузеры либо игнорируют добавочные части, либо отключают документ целиком.

Общая форма заголовка, сообщающего о принадлежности передаваемых данных MIME-типу multipart/mixed, выглядит примерно так:

Content-type: multipart/mixed;boundary="СлучайнаяСтрока"

Этот компонент HTTP-заголовка говорит броузеру Mozilla, что ожидается прибытие документа, состоящего из нескольких частей, и что следует обратить внимание на разграничитель СлучайнаяСтрока, отделяющий части друг от друга. Эта строка, разграничивающая части, должна быть уникальной и не должна появляться нигде внутри отдельныхпередаваемых частей. Содержимое данных, передаваемых от сервера клиенту, выглядит примерно так:

--СлучайнаяСтрока
Content-type: text/plain
Данные для первой части
--СлучайнаяСтрока
Content-type: text/plain
Данные для второй части
--СлучайнаяСтрока--

В этом примере документ состоит из двух чисто текстовых частей. Сервер посылает каждую часть, вставляя перед ней два тире и разграничитель СлучайнаяСтрока, за которыми идут поле Content-type и данные частей документа. Последняя передача от сервера к клиенту – это строка-разграничитель с двумя дополнительными тире после нее, обозначающими, что передана последняя часть документа.

При получении каждой части броузер Mozilla автоматически добавляет поступившие данные к отображению текущего документа.

Чтобы сделать возможным функционирование SP-документа такого типа, необходимо написать специальное приложение для HTTP-сервера.


Это приложение должно создавать специальный HTTP MIME-заголовок multipart/mixed и посылать различные документы, разделяя их разграничителем.

Динамические документы, рассылаемые сервером, были изобретены в фирме Netscape. Соединение клиент-сервер остается открытым после первоначальной передачи данных, и сервер периодически посылает клиенту новые данные, обновляя отображение документа. SP-поведение делается возможным за счет некоего специального программирования со стороны сервера и осуществляется при помощи специального компонента MIME-стандарта, принятого в компьютерной индустрии для передачи через Интернет мультимедийных документов.

Тип передачи данных multipart/x-mixed-replace
Авторы SP-документов могут использовать экспериментальный вариант MIME-типа multipart/mixed, известный как multipart/x-mixed-replace. Разница между этим особым типом содержимого и его предшественником состоит в том, что вместо того чтобы просто добавлять содержимое к текущему отображению, в replace-версии каждая последующая часть замещает предыдущую.

Формат замещающего HTTP-заголовка очень похож на его аналог для типа multipart/mixed, единственная разница состоит в Content-type:

multipart/x-mixed-replace;boundary=СлучайнаяСтрока

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

Использование документов, состоящихиз нескольких частей
Легко понять, как можно использовать эти два специальных составных MIME-типа для создания SP-документов.


Передавая отдельные части с временными промежутками, вы можете создать автоматически прокручивающееся сообщение в окне броузера Mozilla. Или, замещая фрагменты документа с использованием MIМE-типа x-mixed-replace, вы можете включить в ваш документ динамическую доску объявлений и даже, возможно, анимацию.
Заметьте, что составные SP-документы не обязаны принадлежать к числу HTML или других текстовых документов. Изображения – это тоже содержимое, кодирующееся в соответствии со стандартом MIME, поэтому HTTP-сервер может также передавать несколько изображений по очереди в качестве частей составной передачи. Поскольку можно также добиться, чтобы каждое следующее изображение замещало предыдущее, результатом будет грубая анимация. Если сделать это правильно, при достаточной скорости передачи результат может оказаться вполне удовлетворительным.

Соображения об эффективности
Документы, рассылаемые сервером (server-push documents, или SP-документы), поддерживают открытым соединение между клиентом и сервером на все время действия динамического документа. От некоторых серверов это может потребовать лишних затрат сетевых ресурсов, а также сохранения в активном состоянии нескольких процессов,
обслуживающих открытое соединение. Убедитесь, что каждый SP-процесс (и, следовательно, каждое соединение клиент-сервер) прекращается после завершения передачи или по истечении некоторого периода молчания. В противном случае кто-нибудь нечаянно зависнет на бесконечно передающемся SP-документе и отберет ресурсы у сервера
и, в конечном счете, у других пользователей.

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

Создание SP-документов
Создайте специальное приложение, работающее вместе с HTTP-сервером, чтобы обеспечить функционирование динамических документов, рассылаемых сервером. Это приложение должно создавать специальные MIME-заголовки Content-type, уведомляющие броузер Mozilla, что следующий за ними документ придет по частям – добавляющимся
к текущему документу или замещающим часть текущего документа.Приложение должно также создавать подходящую строку-разграничитель и посылать для каждой передаваемой части заголовок Contenttype и собственно данные, возможно, отделяя передачу последовательных частей некоторым промежутком времени. Вам понадобится обратиться к документации вашего сервера, чтобы узнать, как следует создавать приложения со стороны сервера, которые могут вызываться при обращении к определенному URL на сервере. Для некоторых серверов это может оказаться не труднее, чем поместить приложение в некоторый каталог на сервере. Для других вам придется долго и мучительно искать обходные пути.

Пример SP-приложения для NCSA и Apache httpd
Программы NCSA (National Center for Supercomputing Applications) иApache httpd как веб-серверы используются на большинстве Unix- и Linux-систем. Администраторы обычно конфигурируют сервер так, чтобы он запускал приложения со стороны сервера, хранящиеся в каталоге cgi-bin.

Ниже следует простой сценарий командного процессора Unix, иллюстрирующий, как следует посылать составные документы броузеру Netscape или Firefox при помощи httpd:

#!/bin/sh
#
# Информируем клиента о том, что мы посылаем составной документ
# с граничной строкой "NEXT"
#
echo "HTTP/1.0 200"
echo "Content-type: multipart/x-mixed-replace;boundary=NEXT"
echo ""
echo "--NEXT"
while true
do
#
# Посылаем следующую часть, сопровождаемую граничной строкой
# После бездействуем пять секунд и повторяем
#
echo "Content-type: text/html"
echo ""
echo
echo
echo "Список серверных процессов"echo ""
echo
echo "

Список серверных процессов

"
echo "Дата:"
date
echo


echo


ps -el
echo "
"
echo ""
echo ""
echo "--NEXT"
sleep 5
done

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

Мы предлагаем этот пример сценария в качестве иллюстрации основной логики, стоящей за каждым генератором SP-документов. Попробуйте создать свое приложение со стороны сервера, используя более традиционный язык программирования, такой как Perl или C. Приложение будет работать более эффективно и сможет лучше обнаруживать разрыв связи клиент-сервер.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела HTML на эту тему:
Client-pull-документы
Обзор динамических документов

Вернуться в раздел: HTML / 13. Динамические документы