Spec-Zone.ru › Dart 1

dart:io

Класс HttpServer

Сервер, предоставляющий контент, такой как веб-страницы, с помощью протокола HTTP.

HttpServer — это поток, который предоставляет объекты HttpRequest. Каждый HttpRequest имеет связанный объект HttpResponse. Сервер отвечает на запрос, записывая данные в этот объект HttpResponse. Следующий пример демонстрирует, как привязать HttpServer к IPv6 InternetAddress на порту 80 (стандартный порт для HTTP-серверов) и как прослушивать запросы. Порт 80 — это стандартный HTTP-порт. Однако доступ к нему на большинстве систем требует привилегий суперпользователя. Для локального тестирования рекомендуется использовать нерезервированный порт (1024 и выше).

END_OF_DOCUMENT_MARKER

Неполные запросы, в которых отсутствует заголовок или его часть, игнорируются, и для них не генерируются исключения или объекты HttpRequest. Аналогично, при записи в HttpResponse любые исключения Socket игнорируются, и любые будущие записи игнорируются.

HttpRequest предоставляет заголовки запроса и, если они существуют, тело запроса в виде потока данных. Если тело не прочитано, оно сбрасывается, когда сервер записывает в HttpResponse или закрывает его.

Привязка с безопасным соединением HTTPS

Используйте bindSecure для создания HTTPS-сервера.

Сервер предоставляет клиенту сертификат. Цепочка сертификатов и закрытый ключ задаются в объекте SecurityContext, который передаётся в bindSecure.

END_OF_DOCUMENT_MARKER

Сертификаты и ключи — это файлы PEM, которые можно создавать и управлять ими с помощью инструментов OpenSSL.

Подключение к сокету сервера

Вы можете использовать конструктор listenOn для подключения HTTP-сервера к ServerSocket.

END_OF_DOCUMENT_MARKER

Другие ресурсы

  • HttpServer является потоком. Обратитесь к классу Stream для получения информации о потоковых возможностях HttpServer. Приостановка подписки на поток приостанавливает работу на уровне ОС.

  • Пакет shelf на pub.dartlang.org содержит набор высокоуровневых классов, которые вместе с этим классом упрощают предоставление контента через HTTP-серверы.

Реализует
  • Stream<HttpRequest>

Статические методы

bind(address, int port, { int backlog: 0, bool v6Only: false, bool shared: false }) → Future<HttpServer>

Начинает прослушивание HTTP-запросов на указанном address и port.

bindSecure(address, int port, SecurityContext context, { int backlog: 0, bool v6Only: false, bool requestClientCertificate: false, bool shared: false }) → Future<HttpServer>

address может быть строкой String или InternetAddress. Если address является строкой String, bind выполнит InternetAddress.lookup и использует первое значение в списке. Для прослушивания на локальном адаптере, который позволит только входящим подключениям с локального хоста, используйте значение InternetAddress.LOOPBACK_IP_V4 или InternetAddress.LOOPBACK_IP_V6. Для разрешения входящих подключений из сети используйте одно из значений InternetAddress.ANY_IP_V4 или InternetAddress.ANY_IP_V6, чтобы привязаться ко всем интерфейсам или IP-адресу конкретного интерфейса.

Конструкторы

HttpServer.listenOn(ServerSocket serverSocket)
factory

Привязывает HTTP-сервер к существующему ServerSocket. При закрытии HttpServer он просто отсоединится, закрыв текущие соединения, но не закрывая serverSocket.

Свойства

address → InternetAddress
только для чтения

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

autoCompress → bool
чтение/запись

Указывает, должен ли HttpServer сжимать контент, если это возможно.

defaultResponseHeaders → HttpHeaders
только для чтения

Набор заголовков по умолчанию, добавляемых ко всем объектам ответа.

idleTimeout → Duration
чтение/запись

Получение или установка таймаута, используемого для бездействующих соединений keep-alive. Если в течение idleTimeout после завершения предыдущего запроса не поступает дальнейших запросов, соединение закрывается.

port → int
только для чтения

Возвращает порт, на котором прослушивает сервер. Это можно использовать для получения фактического порта, когда значение 0 для port указано в вызове bind или bindSecure.

serverHeader → String
чтение/запись

Получение и установка значения заголовка Server по умолчанию для всех ответов, генерируемых этим HttpServer.

sessionTimeout → int
только для записи

Устанавливает таймаут в секундах для сеансов этого HttpServer. Таймаут по умолчанию составляет 20 минут.

first → Future<HttpRequest>
только для чтения, унаследованное

Возвращает первый элемент потока.

hashCode → int
только для чтения, унаследованное

Хэш-код этого объекта.

isBroadcast → bool
только для чтения, унаследованное

Указывает, является ли этот поток потоком широковещательной передачи.

isEmpty → Future<bool>
только для чтения, унаследованное

Указывает, содержит ли этот поток какие-либо элементы.

last → Future<HttpRequest>
только для чтения, унаследованное

Возвращает последний элемент потока.

length → Future<int>
только для чтения, унаследованное

Подсчитывает элементы в потоке.

runtimeType → Type
только для чтения, унаследованное

Представление типа объекта во время выполнения.

single → Future<HttpRequest>
только для чтения, унаследованное

Возвращает единственный элемент.

Операторы

operator ==(other) → bool
унаследованное

Оператор равенства.

Методы

close({bool force: false }) → Future

Постоянно останавливает прослушивание новых соединений этим HttpServer. Это закрывает поток HttpRequest с событием завершения. Возвращенное будущее завершается, когда сервер остановлен. Для сервера, запущенного с помощью bind или bindSecure, это означает, что порт, на котором происходит прослушивание, больше не используется.

connectionsInfo() → HttpConnectionsInfo

Возвращает объект HttpConnectionsInfo, суммирующий количество текущих соединений, обрабатываемых сервером.

any(bool test(T element)) → Future<bool>
inherited

Проверяет, принимает ли test любой элемент, предоставленный этим потоком.

asBroadcastStream({void onListen(StreamSubscription<T> subscription), void onCancel(StreamSubscription<T> subscription) }) → Stream<HttpRequest>
inherited

Возвращает поток с множественной подпиской, который генерирует те же события, что и этот.

asyncExpand<E>(Stream<E> convert(T event)) → Stream<E>
inherited

Создает новый поток с событиями потока на основе исходного события.

asyncMap<E>(dynamic convert(T event)) → Stream<E>
inherited

Создает новый поток, асинхронно отображающий каждое событие данных из этого потока в новое событие.

contains(Object needle) → Future<bool>
inherited

Проверяет, встречается ли needle в элементах, предоставленных этим потоком.

distinct([bool equals(T previous, T next) ]) → Stream<HttpRequest>
inherited

Пропускает события данных, если они равны предыдущему событию данных.

drain<E>([E futureValue ]) → Future<E>
inherited

Отбрасывает все данные в потоке, но сигнализирует о завершении или возникновении ошибки.

elementAt(int index) → Future<HttpRequest>
inherited

Возвращает значение index-го события данных этого потока.

every(bool test(T element)) → Future<bool>
inherited

Проверяет, принимает ли test все элементы, предоставляемые этим потоком.

expand<S>(Iterable<S> convert(T value)) → Stream<S>
inherited

Создает новый поток из этого потока, преобразующий каждый элемент в ноль или более событий.

firstWhere(bool test(T element), { Object defaultValue() }) → Future
inherited

Находит первый элемент этого потока, соответствующий test.

fold<S>(S initialValue, S combine(S previous, T element)) → Future<S>
inherited

Редуцирует последовательность значений, многократно применяя combine.

forEach(void action(T element)) → Future
inherited

Выполняет action для каждого события данных потока.

handleError(Function onError, { bool test(error) }) → Stream<HttpRequest>
inherited

Создаёт обёртку потока, перехватывающую некоторые ошибки из этого потока.

join([String separator = "" ]) → Future<String>
inherited

Собирает строку представлений событий данных в строковом формате.

lastWhere(bool test(T element), { Object defaultValue() }) → Future
inherited

Находит последний элемент в этом потоке, соответствующий test.

listen(void onData(T event), { Function onError, void onDone(), bool cancelOnError }) → StreamSubscription<HttpRequest>
inherited

Добавляет подписку на этот поток.

map<S>(S convert(T event)) → Stream<S>
inherited

Создает новый поток, преобразующий каждый элемент этого потока в новое значение с использованием функции convert.

noSuchMethod(Invocation invocation) → dynamic
inherited

Вызывается при доступе к несуществующему методу или свойству.

pipe(StreamConsumer<HttpRequest> streamConsumer) → Future
inherited

Перенаправляет события этого потока в streamConsumer.

reduce(HttpRequest combine(T previous, T element)) → Future<HttpRequest>
inherited

Редуцирует последовательность значений, многократно применяя combine.

singleWhere(bool test(T element)) → Future<HttpRequest>
inherited

Находит единственный элемент в этом потоке, соответствующий test.

skip(int count) → Stream<HttpRequest>
inherited

Пропускает первые count события данных из этого потока.

skipWhile(bool test(T element)) → Stream<HttpRequest>
inherited

Пропускает события данных из этого потока, пока они соответствуют test.

take(int count) → Stream<HttpRequest>
inherited

Предоставляет не более первых count событий данных этого потока.

takeWhile(bool test(T element)) → Stream<HttpRequest>
inherited

Передает события данных, пока test успешно.

timeout(Duration timeLimit, { void onTimeout(EventSink<T> sink) }) → Stream<HttpRequest>
inherited

Создаёт новый поток с теми же событиями, что и этот поток.

toList() → Future<List<HttpRequest>>
inherited

Собирает данные этого потока в список.

toSet() → Future<Множество<HttpRequest>>
inherited

Собирает данные этого потока в множество.

toString() → Строка
inherited

Возвращает строковое представление этого объекта.

transform<S>(StreamTransformer<HttpRequest, S> streamTransformer) → Поток<S>
inherited

Цепочкой этот поток как вход для предоставленного StreamTransformer.

where(bool test(T event)) → Поток<HttpRequest>
inherited

Создаёт новый поток из этого потока, который пропускает некоторые события данных.

© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-io/HttpServer-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API