Простейшие примеры WebSocket клиента и сервера на Python без асинхронности.
pip install -r requirements.txtВ одном терминале:
python server.pyСервер запустится на ws://127.0.0.1:8765
В другом терминале:
python client.pyКлиент подключится к серверу и отправит тестовое сообщение.
- Сервер принимает подключения и сообщения от клиентов
- Клиент подключается к серверу и может отправлять сообщения
- Все сообщения выводятся в консоль
- И клиент, и сервер поддерживают ввод сообщений прямо в терминале
Для остановки нажмите Ctrl+C в терминале с сервером или клиентом.
Клиент поддерживает режим замера производительности для тестирования скорости отправки сообщений.
Запустите клиент с флагом --benchmark:
python client.py --benchmarkПо умолчанию замер выполняется в течение 10 секунд с выводом статистики каждую секунду.
--benchmark- включить режим замера производительности--duration <секунды>- длительность замера (по умолчанию: 10)--interval <секунды>- интервал для вывода статистики (по умолчанию: 1)--url <url>- URL WebSocket сервера (по умолчанию: ws://127.0.0.1:8765)
Замер на 30 секунд с выводом статистики каждые 2 секунды:
python client.py --benchmark --duration 30 --interval 2Замер на 60 секунд с выводом статистики каждые 5 секунд:
python client.py --benchmark --duration 60 --interval 5В процессе выполнения:
- Каждые N секунд (по параметру
--interval) выводится:- Время с начала замера
- Количество отправленных сообщений за интервал
- Скорость отправки (сообщений/секунду)
По завершении:
- Общее количество отправленных сообщений
- Общее время выполнения
- Средняя скорость отправки (сообщений/секунду)
- Сервер автоматически распознает режим бенчмарка и не выводит каждое тестовое сообщение в консоль
- Вместо этого сервер показывает только служебные сообщения:
- "Выполняется замер производительности..." - при начале замера
- "Замер завершен" - при окончании замера
- Клиент также не выводит ответы сервера на тестовые сообщения, чтобы не засорять консоль