faye-websocket
Advanced tools
Comparing version 0.9.1 to 0.9.2
@@ -0,1 +1,6 @@ | ||
### 0.9.2 / 2014-12-21 | ||
* Only emit `error` once, and don't emit it after `close` | ||
### 0.9.1 / 2014-12-18 | ||
@@ -2,0 +7,0 @@ |
@@ -35,9 +35,6 @@ var Stream = require('stream').Stream, | ||
this._driver.on('message', function(e) { self._receiveMessage(e.data) }); | ||
this._driver.on('close', function(e) { self._finalize(e.reason, e.code) }); | ||
this._driver.on('close', function(e) { self._beginClose(e.reason, e.code) }); | ||
this._driver.on('error', function(error) { | ||
var event = new Event('error', {message: error.message}); | ||
event.initEvent('error', false, false); | ||
self.dispatchEvent(event); | ||
self._finalize('', 1006); | ||
self._emitError(error.message); | ||
}); | ||
@@ -111,7 +108,8 @@ this.on('error', function() {}); | ||
['close', 'end'].forEach(function(event) { | ||
this._stream.on(event, function() { self._finalize('', 1006) }); | ||
this._stream.on(event, function() { self._finalizeClose() }); | ||
}, this); | ||
this._stream.on('error', function(error) { | ||
self._driver.emit('error', new Error('Network error: ' + self.url + ': ' + error.message)); | ||
self._emitError('Network error: ' + self.url + ': ' + error.message); | ||
self._finalizeClose(); | ||
}); | ||
@@ -141,13 +139,33 @@ }, | ||
_finalize: function(reason, code) { | ||
_emitError: function(message) { | ||
if (this.readyState >= API.CLOSING) return; | ||
var event = new Event('error', {message: message}); | ||
event.initEvent('error', false, false); | ||
this.dispatchEvent(event); | ||
}, | ||
_beginClose: function(reason, code) { | ||
if (this.readyState === API.CLOSED) return; | ||
this.readyState = API.CLOSING; | ||
if (this._stream) { | ||
this._stream.end(); | ||
if (!this._stream.readable) this._finalizeClose(); | ||
} | ||
this._closeParams = [reason, code]; | ||
}, | ||
_finalizeClose: function() { | ||
if (this.readyState === API.CLOSED) return; | ||
this.readyState = API.CLOSED; | ||
if (this._pingTimer) clearInterval(this._pingTimer); | ||
if (this._stream) this._stream.end(); | ||
if (this.readable) this.emit('end'); | ||
this.readable = this.writable = false; | ||
var event = new Event('close', {code: code || 1000, reason: reason || ''}); | ||
var reason = this._closeParams ? this._closeParams[0] : '', | ||
code = this._closeParams ? this._closeParams[1] : 1006; | ||
var event = new Event('close', {code: code, reason: reason}); | ||
event.initEvent('close', false, false); | ||
@@ -154,0 +172,0 @@ this.dispatchEvent(event); |
@@ -8,3 +8,3 @@ { "name" : "faye-websocket" | ||
, "version" : "0.9.1" | ||
, "version" : "0.9.2" | ||
, "engines" : {"node": ">=0.4.0"} | ||
@@ -11,0 +11,0 @@ , "main" : "./lib/faye/websocket" |
35658
486