github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/sockjs-client-1.1.0/lib/info-ajax.js (about)

     1  'use strict';
     2  
     3  var EventEmitter = require('events').EventEmitter
     4    , inherits = require('inherits')
     5    , JSON3 = require('json3')
     6    , objectUtils = require('./utils/object')
     7    ;
     8  
     9  var debug = function() {};
    10  if (process.env.NODE_ENV !== 'production') {
    11    debug = require('debug')('sockjs-client:info-ajax');
    12  }
    13  
    14  function InfoAjax(url, AjaxObject) {
    15    EventEmitter.call(this);
    16  
    17    var self = this;
    18    var t0 = +new Date();
    19    this.xo = new AjaxObject('GET', url);
    20  
    21    this.xo.once('finish', function(status, text) {
    22      var info, rtt;
    23      if (status === 200) {
    24        rtt = (+new Date()) - t0;
    25        if (text) {
    26          try {
    27            info = JSON3.parse(text);
    28          } catch (e) {
    29            debug('bad json', text);
    30          }
    31        }
    32  
    33        if (!objectUtils.isObject(info)) {
    34          info = {};
    35        }
    36      }
    37      self.emit('finish', info, rtt);
    38      self.removeAllListeners();
    39    });
    40  }
    41  
    42  inherits(InfoAjax, EventEmitter);
    43  
    44  InfoAjax.prototype.close = function() {
    45    this.removeAllListeners();
    46    this.xo.close();
    47  };
    48  
    49  module.exports = InfoAjax;