Для нагрузочного тестирования WebSocket сервера в проекте мы решили написать ботов, имитирующих подключения пользователей, и создать с их помощью некую активность. Ботов написал я на Node.js в виде скрипта с параметрами.
Интересным моментом в этой задаче оказался выбор модуля, реализующего WebSocket подключение. Если в браузере для этого есть специальный объект, который полностью скрывает от разработчик всю кухню подключения, рукопожатия и передачи данных, то в Node.js это нужно делать, что называется, руками. Для этих целей написаны различные модули. Для моих нужд самым подходящим оказался модуль websocket.
Работа WebSocket клиента устроена аналогично
net.Socket
:
// Создаётся экземпляр клиента
var WebSocketClient = require('websocket').client;
var client = new WebSocketClient();
// Вешаем на него обработчик события подключения к серверу
client.on('connect', handler);
// Подключаемся к нужному ресурсу
client.connect('ws://localhost:9000/');
В обработчик подключения в качестве аргумента передаётся объект, который может принимать и отсылать сообщения:
function handler(connection) {
connection.on('message', function (message) {
// делаем что-нибудь с пришедшим сообщением
console.log(message);
}
// посылаем сообщение серверу
connection.sendUTF('Hi, there!');
}