push-stream: Модуль потоковой передачи NGINX
Установка на Debian/Ubuntu
Эти документы применимы к пакету APT nginx-module-push-stream, предоставленному репозиторием GetPageSpeed Extras.
- Настройте репозиторий APT, как описано в настройке репозитория APT.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-push-stream
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|---------|------------|---------------|
| debian | bookworm| main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
Чистая технология HTTP push для вашего Nginx.
Comet станет проще и действительно масштабируемым.
Поддерживает EventSource, WebSocket, долгое опросивание и Forever Iframe. Смотрите некоторые примеры ниже.
_Этот модуль не распространяется вместе с исходным кодом Nginx. Смотрите инструкции по установке.
Доступен на GitHub по адресу nginx_push_stream_module
Список изменений
Всегда заглядывайте в CHANGELOG.textile, чтобы увидеть, что нового.
Участие
После того как вы опробуете этот модуль и вам он понравится, не стесняйтесь вернуть что-то обратно и помочь в обслуживании проекта ;)

Статус
Этот модуль считается готовым к производству.
Базовая конфигурация
# добавьте push_stream_shared_memory_size в ваш http контекст
http {
push_stream_shared_memory_size 32M;
# определите конечные точки для издателя и подписчика в вашем контексте сервера
server {
location /channels-stats {
# активируйте режим статистики каналов для этого местоположения
push_stream_channels_statistics;
# канал на основе строки запроса
push_stream_channels_path $arg_id;
}
location /pub {
# активируйте режим издателя (админа) для этого местоположения
push_stream_publisher admin;
# канал на основе строки запроса
push_stream_channels_path $arg_id;
}
location ~ /sub/(.*) {
# активируйте режим подписчика (стриминга) для этого местоположения
push_stream_subscriber;
# позиционный путь канала
push_stream_channels_path $1;
}
}
}
Основное использование
Вы можете почувствовать атмосферу прямо сейчас в командной строке. Попробуйте использовать более одного терминала и начните играть с http pubsub:
# Подписки
curl -s -v --no-buffer 'http://localhost/sub/my_channel_1'
curl -s -v --no-buffer 'http://localhost/sub/your_channel_1'
curl -s -v --no-buffer 'http://localhost/sub/your_channel_2'
# Публикации
curl -s -v -X POST 'http://localhost/pub?id=my_channel_1' -d 'Hello World!'
curl -s -v -X POST 'http://localhost/pub?id=your_channel_1' -d 'Hi everybody!'
curl -s -v -X POST 'http://localhost/pub?id=your_channel_2' -d 'Goodbye!'
# Статистика каналов для издателя (формат json)
curl -s -v 'http://localhost/pub?id=my_channel_1'
# Статистика всех каналов в обобщенном виде (формат json)
curl -s -v 'http://localhost/channels-stats'
# Подробная статистика всех каналов (формат json)
curl -s -v 'http://localhost/channels-stats?id=ALL'
# Подробная статистика каналов с префиксом (формат json)
curl -s -v 'http://localhost/channels-stats?id=your_channel_*'
# Статистика каналов (формат json)
curl -s -v 'http://localhost/channels-stats?id=my_channel_1'
# Удалить каналы
curl -s -v -X DELETE 'http://localhost/pub?id=my_channel_1'
Некоторые примеры
- Примеры Curl
- Forever (скрытый) iFrame
- Event Source
- WebSocket
- Long Polling
- JSONP
- M-JPEG
- Другие примеры
Часто задаваемые вопросы
Есть сомнения?! Проверьте Часто задаваемые вопросы.
Сообщение об ошибке
Чтобы сообщить об ошибке, пожалуйста, предоставьте следующую информацию, когда это применимо:
- Какая версия модуля потоковой передачи используется (commit sha1)?
- Какая версия nginx используется?
- Конфигурация Nginx в использовании
- Вывод команды “nginx -V”
- Дамп ядра, указывающий на сбой в коде модуля. Проверьте здесь, как его получить.
- Пошаговое описание для воспроизведения ошибки.
Кто использует модуль?
Используете этот модуль? Укажите свое имя в списке.
Javascript клиент
Существует реализация javascript клиента здесь, которая не зависит от фреймворка. Попробуйте и помогите улучшить его. ;)
Директивы
(1) Определение местоположений, (2) Основная конфигурация, (3) Конфигурация подписчиков, (4) Конфигурация издателей, (5) Конфигурация статистики каналов, (6) Конфигурация WebSocket
Использование памяти
Ниже приведена информация о минимальном объеме памяти, используемом для каждого объекта:
- сообщение в общем = 200 байт
- канал в общем = 270 байт
- подписчик
в общем = 160 байт
в системе = 6550 байт
Тесты
Тесты сервера для этого модуля написаны на Ruby и являются тестами приемки, нажмите здесь для получения дополнительных сведений.
Дискуссия
Модуль потоковой передачи Nginx Группа обсуждения