postal.js/example/node/node_modules/socket.io/lib/transports/http-polling.js

135 lines
2.1 KiB
JavaScript

/*!
* socket.io-node
* Copyright(c) 2011 LearnBoost <dev@learnboost.com>
* MIT Licensed
*/
/**
* Module requirements.
*/
var HTTPTransport = require( './http' );
/**
* Exports the constructor.
*/
exports = module.exports = HTTPPolling;
/**
* HTTP polling constructor.
*
* @api public.
*/
function HTTPPolling( mng, data, req ) {
HTTPTransport.call( this, mng, data, req );
}
;
/**
* Inherits from HTTPTransport.
*
* @api public.
*/
HTTPPolling.prototype.__proto__ = HTTPTransport.prototype;
/**
* Transport name
*
* @api public
*/
HTTPPolling.prototype.name = 'httppolling';
/**
* Removes heartbeat timeouts for polling.
*/
HTTPPolling.prototype.setHeartbeatInterval = function () {
return this;
};
/**
* Handles a request
*
* @api private
*/
HTTPPolling.prototype.handleRequest = function ( req ) {
HTTPTransport.prototype.handleRequest.call( this, req );
if ( req.method == 'GET' ) {
var self = this;
this.pollTimeout = setTimeout( function () {
self.packet( { type : 'noop' } );
self.log.debug( self.name + ' closed due to exceeded duration' );
}, this.manager.get( 'polling duration' ) * 1000 );
this.log.debug( 'setting poll timeout' );
}
};
/**
* Clears polling timeout
*
* @api private
*/
HTTPPolling.prototype.clearPollTimeout = function () {
if ( this.pollTimeout ) {
clearTimeout( this.pollTimeout );
this.pollTimeout = null;
this.log.debug( 'clearing poll timeout' );
}
return this;
};
/**
* Override clear timeouts to clear the poll timeout
*
* @api private
*/
HTTPPolling.prototype.clearTimeouts = function () {
HTTPTransport.prototype.clearTimeouts.call( this );
this.clearPollTimeout();
};
/**
* doWrite to clear poll timeout
*
* @api private
*/
HTTPPolling.prototype.doWrite = function () {
this.clearPollTimeout();
};
/**
* Performs a write.
*
* @api private.
*/
HTTPPolling.prototype.write = function ( data, close ) {
this.doWrite( data );
this.response.end();
this.onClose();
};
/**
* Override end.
*
* @api private
*/
HTTPPolling.prototype.end = function () {
this.clearPollTimeout();
return HTTPTransport.prototype.end.call( this );
};