50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
var EventEmitter = require('events').EventEmitter
 | 
						|
  , inherits = require('inherits')
 | 
						|
  , JSON3 = require('json3')
 | 
						|
  , objectUtils = require('./utils/object')
 | 
						|
  ;
 | 
						|
 | 
						|
var debug = function() {};
 | 
						|
if (process.env.NODE_ENV !== 'production') {
 | 
						|
  debug = require('debug')('sockjs-client:info-ajax');
 | 
						|
}
 | 
						|
 | 
						|
function InfoAjax(url, AjaxObject) {
 | 
						|
  EventEmitter.call(this);
 | 
						|
 | 
						|
  var self = this;
 | 
						|
  var t0 = +new Date();
 | 
						|
  this.xo = new AjaxObject('GET', url);
 | 
						|
 | 
						|
  this.xo.once('finish', function(status, text) {
 | 
						|
    var info, rtt;
 | 
						|
    if (status === 200) {
 | 
						|
      rtt = (+new Date()) - t0;
 | 
						|
      if (text) {
 | 
						|
        try {
 | 
						|
          info = JSON3.parse(text);
 | 
						|
        } catch (e) {
 | 
						|
          debug('bad json', text);
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      if (!objectUtils.isObject(info)) {
 | 
						|
        info = {};
 | 
						|
      }
 | 
						|
    }
 | 
						|
    self.emit('finish', info, rtt);
 | 
						|
    self.removeAllListeners();
 | 
						|
  });
 | 
						|
}
 | 
						|
 | 
						|
inherits(InfoAjax, EventEmitter);
 | 
						|
 | 
						|
InfoAjax.prototype.close = function() {
 | 
						|
  this.removeAllListeners();
 | 
						|
  this.xo.close();
 | 
						|
};
 | 
						|
 | 
						|
module.exports = InfoAjax;
 |