diff --git a/README.md b/README.md index 782cbd8..08613c7 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) +* [ws](https://github.com/websockets/ws) ## 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, ws). 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 @@ -88,6 +89,9 @@ generator structure : // WAMP session // client.subscribe('com.myapp.hello').then(function(args) { }); + // ws client + // client.send("Hello World"); + done(); }, @@ -101,6 +105,7 @@ generator structure : // client.emit('test', { hello: 'world' }); // client.publish('/test', { hello: 'world' }); // client.call('com.myapp.add2', [2, 3]).then(function (res) { }); + // client.send('hello world'); done(); }, diff --git a/index.js b/index.js index 341884e..fdcb63f 100644 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ program .option('-m, --message ', 'number of message for a client. Default to 0', parseInt) .option('-o, --output ', 'Output file') .option('-t, --type ', 'type of websocket server to bench(socket.io, engine.io, faye, primus, wamp). Default to io') - .option('-p, --transport ', 'type of transport to websocket(engine.io, websockets, browserchannel, sockjs, socket.io). Default to websockets') + .option('-p, --transport ', 'type of transport to websocket(engine.io, websockets, browserchannel, sockjs, socket.io, ws). Default to websockets') .option('-k, --keep-alive', 'Keep alive connection') .option('-v, --verbose', 'Verbose Logging') .parse(process.argv); diff --git a/lib/generator.js b/lib/generator.js index e4d3f5f..89d780e 100644 --- a/lib/generator.js +++ b/lib/generator.js @@ -36,6 +36,7 @@ module.exports = { // Your logic //client.emit('test', { hello: 'world' }); //client.publish('/test', { hello: 'world' }); + //client.send(JSON.stringify({hello: 'world'})); done(); } }; diff --git a/lib/worker.js b/lib/worker.js index 27f2d01..0df9a47 100644 --- a/lib/worker.js +++ b/lib/worker.js @@ -29,6 +29,9 @@ switch (workerType) { case 'wamp': BenchmarkWorker = require('./workers/wampworker.js'); break; + case 'ws': + BenchmarkWorker = require('./workers/wsworker.js'); + break; default: logger.error('error workerType ' + workerType); } diff --git a/lib/workers/wsworker.js b/lib/workers/wsworker.js new file mode 100644 index 0000000..3cfc3ca --- /dev/null +++ b/lib/workers/wsworker.js @@ -0,0 +1,39 @@ +/*global module, require*/ +var ws = require('ws'), + util = require('util'), + BaseWorker = require('./baseworker.js'), + logger = require('../logger.js'); + +/** + * SocketIOWorker Worker class inherits form BaseWorker + */ +var SocketIOWorker = function (server, generator) { + SocketIOWorker.super_.apply(this, arguments); +}; + +util.inherits(SocketIOWorker, BaseWorker); + +SocketIOWorker.prototype.createClient = function (callback) { + var self = this; + var client = new ws(this.server, { 'force new connection' : true}); + + client.on('open', function () { + callback(false, client); + }); + + client.on('close', function (err) { + if (self.verbose) { + logger.error("SocketIO Worker connect_failed" + JSON.stringify(err)); + } + callback(true, client); + }); + + client.on('error', function (err) { + if (self.verbose) { + logger.error("SocketIO Worker error: " + JSON.stringify(err)); + } + callback(true, client); + }); +}; + +module.exports = SocketIOWorker; diff --git a/package.json b/package.json index f6c8182..9781852 100644 --- a/package.json +++ b/package.json @@ -16,16 +16,17 @@ "author": "", "license": "BSD", "dependencies": { - "socket.io-client": "~1.3.5", - "engine.io-client": "~0.9.0", - "commander": "~1.1.1", - "colors": "~0.6", + "autobahn": "~0.9.5", "cli-table": "~0.3.0", + "colors": "~0.6", + "commander": "~1.1.1", + "engine.io-client": "~0.9.0", "faye": "~0.8.9", - "winston": "~0.7.1", - "socket.io": "~1.3.5", "primus": "~1.5.2", - "autobahn": "~0.9.5" + "socket.io": "~1.3.5", + "socket.io-client": "~1.3.5", + "winston": "~0.7.1", + "ws": "^4.0.0" }, "devDependencies": { "chai": "~1.6.0",