| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- 'use strict';
 
- var EventEmitter = require('events').EventEmitter
 
-   , inherits = require('inherits')
 
-   , http = require('http')
 
-   , https = require('https')
 
-   , URL = require('url-parse')
 
-   ;
 
- var debug = function() {};
 
- if (process.env.NODE_ENV !== 'production') {
 
-   debug = require('debug')('sockjs-client:driver:xhr');
 
- }
 
- function XhrDriver(method, url, payload, opts) {
 
-   debug(method, url, payload);
 
-   var self = this;
 
-   EventEmitter.call(this);
 
-   var parsedUrl = new URL(url);
 
-   var options = {
 
-     method: method
 
-   , hostname: parsedUrl.hostname.replace(/\[|\]/g, '')
 
-   , port: parsedUrl.port
 
-   , path: parsedUrl.pathname + (parsedUrl.query || '')
 
-   , headers: opts && opts.headers
 
-   };
 
-   var protocol = parsedUrl.protocol === 'https:' ? https : http;
 
-   this.req = protocol.request(options, function(res) {
 
-     res.setEncoding('utf8');
 
-     var responseText = '';
 
-     res.on('data', function(chunk) {
 
-       debug('data', chunk);
 
-       responseText += chunk;
 
-       self.emit('chunk', 200, responseText);
 
-     });
 
-     res.once('end', function() {
 
-       debug('end');
 
-       self.emit('finish', res.statusCode, responseText);
 
-       self.req = null;
 
-     });
 
-   });
 
-   this.req.on('error', function(e) {
 
-     debug('error', e);
 
-     self.emit('finish', 0, e.message);
 
-   });
 
-   if (payload) {
 
-     this.req.write(payload);
 
-   }
 
-   this.req.end();
 
- }
 
- inherits(XhrDriver, EventEmitter);
 
- XhrDriver.prototype.close = function() {
 
-   debug('close');
 
-   this.removeAllListeners();
 
-   if (this.req) {
 
-     this.req.abort();
 
-     this.req = null;
 
-   }
 
- };
 
- XhrDriver.enabled = true;
 
- XhrDriver.supportsCORS = true;
 
- module.exports = XhrDriver;
 
 
  |