123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- '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;
|