mirror of
https://github.com/Hopiu/postal.js.git
synced 2026-03-26 02:40:23 +00:00
135 lines
2.1 KiB
JavaScript
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 );
|
|
};
|
|
|