From 74b76e56b7e09f51b90db2cd2c8b89bb2ea59dcd Mon Sep 17 00:00:00 2001 From: James Coglan Date: Sun, 12 Feb 2012 23:59:20 +0000 Subject: [PATCH] Only send ping messages for EventSource if the user specifies an interval, for symmetry with WebSocket. --- lib/faye/eventsource.js | 3 ++- lib/faye/websocket.js | 11 +++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/faye/eventsource.js b/lib/faye/eventsource.js index 5fd93a7..1120813 100644 --- a/lib/faye/eventsource.js +++ b/lib/faye/eventsource.js @@ -31,7 +31,8 @@ var EventSource = function(request, response, options) { this._sendBuffer = []; process.nextTick(function() { self._open() }); - this._pingLoop = setInterval(function() { self.ping() }, this._ping * 1000); + if (this._ping) + this._pingLoop = setInterval(function() { self.ping() }, this._ping * 1000); ['close', 'end', 'error'].forEach(function(event) { self._stream.addListener(event, function() { self.close() }); diff --git a/lib/faye/websocket.js b/lib/faye/websocket.js index 2d8e591..add1c79 100644 --- a/lib/faye/websocket.js +++ b/lib/faye/websocket.js @@ -34,6 +34,8 @@ var isSecureConnection = function(request) { var WebSocket = function(request, socket, head, supportedProtos, options) { this.request = request; this._stream = request.socket; + this._ping = options && options.ping; + this._pingId = 0; this._stream.setTimeout(0); this._stream.setNoDelay(true); @@ -55,18 +57,15 @@ var WebSocket = function(request, socket, head, supportedProtos, options) { if (this._parser.isOpen()) this.readyState = API.OPEN; - this.protocol = this._parser.protocol || ''; - this.version = this._parser.getVersion(); - - this._ping = options && options.ping; - this._pingId = 0; - if (this._ping) this._pingLoop = setInterval(function() { self._pingId += 1; self.ping(self._pingId.toString()); }, this._ping * 1000); + this.protocol = this._parser.protocol || ''; + this.version = this._parser.getVersion(); + this._stream.addListener('data', function(data) { var response = self._parser.parse(data); if (!response) return;