Здравствуйте.
Подскажите, пожалуйста, как протестировать NodeJS + Websockets (Socket.IO/SockJS)?
На небольшом сервере Ubuntu 14.04 LTS установлено NodeJS 4.4.4 и на 8081 порту запущено 2 приложения на Express + Socket.IO и SockJS. Необходимо проверить, что все работает нормально + проверить как будет вести себя приложение под нагрузкой (минимум 100 одновременных соединений). На данном этапе приложение очень простые типа Hello World, но все будет постепенно усложнятся. Клиент просто подключается к сокету и выводит в консоль все сообщения.
Код server.js (SockJS):
var http = require('http');
var sockjs = require('sockjs');
var echo = sockjs.createServer({ sockjs_url: 'http://cdn.jsdelivr.net/sockjs/1.0.1/sockjs.min.js' });
echo.on('connection', function(socket) {
socket.write('connected');
socket.write('Hello world');
socket.on('close', function() {
socket.write('disconnected');
});
});
var server = http.createServer();
echo.installHandlers(server, {prefix:'/websocket'});
server.listen(8081, '0.0.0.0');
Код server.js (Socket.io+ Express):
var express = require('express')();
var http = require('http').Server(express);
var io = require('socket.io')(http, {path: '/websocket'});
io.on('connection', function (socket) {
io.emit('message', 'connected');
io.emit('message', 'Hello world');
});
express.get('/index.html', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
express.get('/socket.io.js', function (req, res) {
res.sendFile(__dirname + '/socket.io.js');
});
http.listen(8081, '0.0.0.0');
Нужна очень простая (желательно консольная) и работоспособная утилита для Ubuntu/MacOS, которая может генерировать соединения на вебсокеты. Пробовал использовать
wsbench,
thor,
odin-ws и несколько других утилит с GitHub, но ничего проверить так и не получилось. В основном или не запускается после установки или выводит ошибки.
node wsbench -c 100 -r 10 ws://******de.net:8081/websocket
/home/n****t/wsbench/lib/optparse.js:144
while(l-- > 0) if(LONG_SWITCH_RE(arr[l])) return true;
^
TypeError: object is not a function
at contains_expr (/home/nan***1t/wsbench/lib/optparse.js:144:23)
at build_rules (/home/n**m1t/wsbench/lib/optparse.js:77:13)
at Object.OptionParser.parse (/home/nan**t/wsbench/lib/optparse.js:224:21)
at Object. (/home/n*****t/wsbench/wsbench:113:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
thor --amount 1 ws://******de.net:8081/websocket
Connecting to ws://******.net:8081/websocket
Online 618 milliseconds
Time taken 618 milliseconds
Connected 0
Disconnected 0
Failed 1
Total transferred 0B
Total received 0B
Durations (ms): min mean stddev median max
Handshaking NaN NaN NaN NaN NaN
Latency NaN NaN NaN NaN NaN
Percentile (ms): 50% 66% 75% 80% 90% 95% 98% 98% 100%
Handshaking NaN NaN NaN NaN NaN NaN NaN NaN NaN
Latency NaN NaN NaN NaN NaN NaN NaN NaN NaN
Received errors:
1x socket hang up
Подключится через браузер к вебсокету и увидеть Hello World получилось, но протестировать не удается.
Поделитесь, пожалуйста, рабочими примерами/утилитами/ссылками для тестирования Socket.io/SockJS.
Спасибо.