Python: минимальный каркас websocket сервера

Из «коробки» в этом каркасе работа в потоках для обработки каждого сообщения. Собрано на основе пакета websockets.

Все клиенты хранятся в массиве clients. При отключении клиента — из массива он удаляется.

Нагрузочное тестирование сайта с помощью Jmeter

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

Дополнительно: тестирование сервера WEBSocket, так-же используемого на том-же сервере, где и расположен сайт.

Решение: используем инструмент Jmeter от фонда Apache.

1) Скачиваем, распаковываем, запускаем из папки bin или файл jmeter.bat (Windows) или jmeter.sh (Linux)

2) На сайте плагинов скачиваем плагины Plugins Manager и JMeterWebSocketSamplers. Ложим их в папку lib\ext, Jmeter перезапускаем. При помощи Plugins Manage, в дальнейшем (если захотите) сможете устанавливать дополнительные плагины.

3) Правой клавишей щелкаем по TestPlan, и создаем поток тестирования.

Далее в настройках выставляем количество потоков, время тестирования и количество циклов

4) Добавляем авторизацию на сайте (ну или просто открытие страницы — тогда POST запрос не заполняем)

 

К этому же узлу добавим и отчетность:

5) По тому-же принципу последовательно добавляем задачи WebSocketOpen,WebSocketSingleWrite и WebSocketClose. Т.е. после авторизации пользователя мы откроем соединение, пошлем что-то на сервер и закроем соединение.

Далее играем циферками количества поток, чтобы выяснить на скольких потоках сайт упадет отдохнуть..

 




WebSocket Ratchet сервер с одновременной прослушкой двух IP

Задача: поднять WebSocket сервер, одновременно слущающий и wss (для браузеров) и ws (для скриптов на PHP на том-же сервере).

Почему такой велосипед? Ну просто вот ну никак не удалось подобрать WebSocket клиент на PHP нормально работающий с WSS (SSL).

Решение:




websocket сервер ratchet c SSL

Почемуто большинство примеров создания websocket сервера с использованием ratchet приведены без использования SSL.  И у всех как я почитаю пляски с буном потом с проксированием через apache или ngnix. Но ведь он умеет и без этого!

Вот примерно как это оформляется:

А вот пример класса MessageService:




Пример клиента WebSocket на PHP

Если клиент на javascript для WebSocket это весьма простая вещь, то на PHP чуточку сложнее. Готовых примеров в сети раз-два и обчелся. Вот пример одной из реализаций:

 

Вспомогательные функции:

» Читать далее




1 2