Blame view

node_modules/sockjs-client/lib/info-ajax.js 1.01 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  '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;