| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 
							- 'use strict';
 
- var inherits = require('inherits')
 
-   , EventEmitter = require('events').EventEmitter
 
-   ;
 
- var debug = function() {};
 
- if (process.env.NODE_ENV !== 'production') {
 
-   debug = require('debug')('sockjs-client:receiver:xhr');
 
- }
 
- function XhrReceiver(url, AjaxObject) {
 
-   debug(url);
 
-   EventEmitter.call(this);
 
-   var self = this;
 
-   this.bufferPosition = 0;
 
-   this.xo = new AjaxObject('POST', url, null);
 
-   this.xo.on('chunk', this._chunkHandler.bind(this));
 
-   this.xo.once('finish', function(status, text) {
 
-     debug('finish', status, text);
 
-     self._chunkHandler(status, text);
 
-     self.xo = null;
 
-     var reason = status === 200 ? 'network' : 'permanent';
 
-     debug('close', reason);
 
-     self.emit('close', null, reason);
 
-     self._cleanup();
 
-   });
 
- }
 
- inherits(XhrReceiver, EventEmitter);
 
- XhrReceiver.prototype._chunkHandler = function(status, text) {
 
-   debug('_chunkHandler', status);
 
-   if (status !== 200 || !text) {
 
-     return;
 
-   }
 
-   for (var idx = -1; ; this.bufferPosition += idx + 1) {
 
-     var buf = text.slice(this.bufferPosition);
 
-     idx = buf.indexOf('\n');
 
-     if (idx === -1) {
 
-       break;
 
-     }
 
-     var msg = buf.slice(0, idx);
 
-     if (msg) {
 
-       debug('message', msg);
 
-       this.emit('message', msg);
 
-     }
 
-   }
 
- };
 
- XhrReceiver.prototype._cleanup = function() {
 
-   debug('_cleanup');
 
-   this.removeAllListeners();
 
- };
 
- XhrReceiver.prototype.abort = function() {
 
-   debug('abort');
 
-   if (this.xo) {
 
-     this.xo.close();
 
-     debug('close');
 
-     this.emit('close', null, 'user');
 
-     this.xo = null;
 
-   }
 
-   this._cleanup();
 
- };
 
- module.exports = XhrReceiver;
 
 
  |