42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var inherits = require('inherits')
 | |
|   , AjaxBasedTransport = require('./lib/ajax-based')
 | |
|   , XhrReceiver = require('./receiver/xhr')
 | |
|   , XHRCorsObject = require('./sender/xhr-cors')
 | |
|   , XHRLocalObject = require('./sender/xhr-local')
 | |
|   , browser = require('../utils/browser')
 | |
|   ;
 | |
| 
 | |
| function XhrStreamingTransport(transUrl) {
 | |
|   if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) {
 | |
|     throw new Error('Transport created when disabled');
 | |
|   }
 | |
|   AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject);
 | |
| }
 | |
| 
 | |
| inherits(XhrStreamingTransport, AjaxBasedTransport);
 | |
| 
 | |
| XhrStreamingTransport.enabled = function(info) {
 | |
|   if (info.nullOrigin) {
 | |
|     return false;
 | |
|   }
 | |
|   // Opera doesn't support xhr-streaming #60
 | |
|   // But it might be able to #92
 | |
|   if (browser.isOpera()) {
 | |
|     return false;
 | |
|   }
 | |
| 
 | |
|   return XHRCorsObject.enabled;
 | |
| };
 | |
| 
 | |
| XhrStreamingTransport.transportName = 'xhr-streaming';
 | |
| XhrStreamingTransport.roundTrips = 2; // preflight, ajax
 | |
| 
 | |
| // Safari gets confused when a streaming ajax request is started
 | |
| // before onload. This causes the load indicator to spin indefinetely.
 | |
| // Only require body when used in a browser
 | |
| XhrStreamingTransport.needBody = !!global.document;
 | |
| 
 | |
| module.exports = XhrStreamingTransport;
 | 
