| 'use strict'; | 
|   | 
| var inherits = require('inherits') | 
|   , EventEmitter = require('events').EventEmitter | 
|   ; | 
|   | 
| var debug = function() {}; | 
| if (process.env.NODE_ENV !== 'production') { | 
|   debug = require('debug')('sockjs-client:polling'); | 
| } | 
|   | 
| function Polling(Receiver, receiveUrl, AjaxObject) { | 
|   debug(receiveUrl); | 
|   EventEmitter.call(this); | 
|   this.Receiver = Receiver; | 
|   this.receiveUrl = receiveUrl; | 
|   this.AjaxObject = AjaxObject; | 
|   this._scheduleReceiver(); | 
| } | 
|   | 
| inherits(Polling, EventEmitter); | 
|   | 
| Polling.prototype._scheduleReceiver = function() { | 
|   debug('_scheduleReceiver'); | 
|   var self = this; | 
|   var poll = this.poll = new this.Receiver(this.receiveUrl, this.AjaxObject); | 
|   | 
|   poll.on('message', function(msg) { | 
|     debug('message', msg); | 
|     self.emit('message', msg); | 
|   }); | 
|   | 
|   poll.once('close', function(code, reason) { | 
|     debug('close', code, reason, self.pollIsClosing); | 
|     self.poll = poll = null; | 
|   | 
|     if (!self.pollIsClosing) { | 
|       if (reason === 'network') { | 
|         self._scheduleReceiver(); | 
|       } else { | 
|         self.emit('close', code || 1006, reason); | 
|         self.removeAllListeners(); | 
|       } | 
|     } | 
|   }); | 
| }; | 
|   | 
| Polling.prototype.abort = function() { | 
|   debug('abort'); | 
|   this.removeAllListeners(); | 
|   this.pollIsClosing = true; | 
|   if (this.poll) { | 
|     this.poll.abort(); | 
|   } | 
| }; | 
|   | 
| module.exports = Polling; |