diff --git a/README.md b/README.md index 782cbd8..656a4b4 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Nodejs cli tool for benchmarking websocket servers. Currently supports: * [Faye](https://github.com/faye/faye) * [Primus](https://github.com/primus/primus) * [WAMP](https://github.com/tavendo/AutobahnJS) +* [StompJs](https://github.com/jmesnil/stomp-websocket) ## Installation @@ -45,7 +46,7 @@ command help -g, --generator Js file for generate message or special event -m, --message Number of message for a client. Default to 0 -o, --output Output file - -t, --type Type of websocket server to bench(socket.io, engine.io, faye, primus, wamp). Default to socket.io + -t, --type Type of websocket server to bench(socket.io, engine.io, faye, primus, wamp, stompjs). Default to socket.io -p, --transport Type of transport to websocket(engine.io, websockets, browserchannel, sockjs, socket.io). Default to websockets (Just for Primus) -k, --keep-alive Keep alive connection -v, --verbose Verbose Logging diff --git a/lib/worker.js b/lib/worker.js index 27f2d01..33daaec 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -29,6 +29,9 @@ switch (workerType) { case 'wamp': BenchmarkWorker = require('./workers/wampworker.js'); break; + case 'stompjs': + BenchmarkWorker = require('./workers/stompjsworker.js'); + break; default: logger.error('error workerType ' + workerType); } diff --git a/lib/workers/stompjsworker.js b/lib/workers/stompjsworker.js new file mode 100644 index 0000000..0971418 --- /dev/null +++ b/lib/workers/stompjsworker.js @@ -0,0 +1,35 @@ +/* global module, require*/ +const SockJS = require('sockjs-client'); +const Stomp = require('stompjs'); +const util = require('util'); +const BaseWorker = require('./baseworker.js'); +const logger = require('../logger.js'); + +/** + * StompjsWorker Worker class inherits form BaseWorker + */ +const StompjsWorker = function(server, generator) { + StompjsWorker.super_.apply(this, arguments); +}; + +util.inherits(StompjsWorker, BaseWorker); + +StompjsWorker.prototype.createClient = function(callback) { + var self = this; + const socket = new SockJS(this.server); + const stompClient = Stomp.over(socket); + stompClient.connect( + {}, + function(frame) { + callback(false, stompClient); + }, + err => { + if (self.verbose) { + logger.error('StompJS Worker connect_failed' + JSON.stringify(err)); + } + callback(true, stompClient); + } + ); +}; + +module.exports = StompjsWorker; diff --git a/package.json b/package.json index f6c8182..f42fbf8 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,8 @@ "dependencies": { "socket.io-client": "~1.3.5", "engine.io-client": "~0.9.0", + "sockjs-client": "~1.1.4", + "stompjs": "~2.3.3", "commander": "~1.1.1", "colors": "~0.6", "cli-table": "~0.3.0",