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