diff --git a/examples/client_auto/client_auto.js b/examples/client_auto/client_auto.js index e89e803..1733608 100644 --- a/examples/client_auto/client_auto.js +++ b/examples/client_auto/client_auto.js @@ -7,7 +7,8 @@ if(process.argv.length < 4 || process.argv.length > 6) { process.exit(1); } -var client = mc.createClient({version: false, +var client = mc.createClient({ + version: false, host: process.argv[2], port: parseInt(process.argv[3]), username: process.argv[4] ? process.argv[4] : "echo", diff --git a/src/client.js b/src/client.js index bec22c4..929b851 100644 --- a/src/client.js +++ b/src/client.js @@ -18,7 +18,6 @@ class Client extends EventEmitter this.version=version; this.isServer = !!isServer; this.splitter=framing.createSplitter(); - this.setSerializer(states.HANDSHAKING); this.packetsToParse={}; this.serializer; this.compressor=null; @@ -28,7 +27,6 @@ class Client extends EventEmitter this.decompressor=null; this.deserializer; this.isServer; - this.protocolState=states.HANDSHAKING; this.ended=true; this.latency=0; @@ -41,6 +39,8 @@ class Client extends EventEmitter const direction = this.isServer ? 'toServer' : 'toClient'; this.packetsToParse[event] -= 1; }); + + this.state=states.HANDSHAKING; } get state(){ @@ -109,19 +109,19 @@ class Client extends EventEmitter const oldProperty = this.protocolState; this.protocolState = newProperty; - if(!this.compressor) - { - this.serializer.unpipe(this.framer); - this.splitter.unpipe(this.deserializer); - } - else - { - this.serializer.unpipe(this.compressor); - this.decompressor.unpipe(this.deserializer); - } + if(this.serializer) { + if (!this.compressor) { + this.serializer.unpipe(); + this.splitter.unpipe(this.deserializer); + } + else { + this.serializer.unpipe(this.compressor); + this.decompressor.unpipe(this.deserializer); + } - this.serializer.removeAllListeners(); - this.deserializer.removeAllListeners(); + this.serializer.removeAllListeners(); + this.deserializer.removeAllListeners(); + } this.setSerializer(this.protocolState); if(!this.compressor) @@ -180,8 +180,8 @@ class Client extends EventEmitter this.framer.on('error', onError); this.splitter.on('error', onError); - this.socket.pipe(this.splitter).pipe(this.deserializer); - this.serializer.pipe(this.framer).pipe(this.socket); + this.socket.pipe(this.splitter); + this.framer.pipe(this.socket); } end(reason) { diff --git a/src/client/autoVersion.js b/src/client/autoVersion.js index 061e52b..23293cb 100644 --- a/src/client/autoVersion.js +++ b/src/client/autoVersion.js @@ -53,6 +53,7 @@ module.exports = function(client, options) { // Finished configuring client object, let connection proceed client.emit('connect_allowed'); + client.wait_connect = false; }); return client; }; diff --git a/src/createClient.js b/src/createClient.js index faaf635..934afc3 100644 --- a/src/createClient.js +++ b/src/createClient.js @@ -19,6 +19,8 @@ module.exports=createClient; function createClient(options) { assert.ok(options, "options is required"); assert.ok(options.username, "username is required"); + if(!options.version) + options.version=false; // TODO: avoid setting default version if autoVersion is enabled const optVersion = options.version || require("./version").defaultVersion;