123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /*!
- * 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';
- /**
- * Override setHandlers
- *
- * @api private
- */
- HTTPPolling.prototype.setHandlers = function () {
- HTTPTransport.prototype.setHandlers.call(this);
- this.socket.removeListener('end', this.bound.end);
- this.socket.removeListener('close', this.bound.close);
- };
- /**
- * 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 (reason) {
- this.clearPollTimeout();
- return HTTPTransport.prototype.end.call(this, reason);
- };
|