|
|
/** * Module dependencies */
var XMLHttpRequest = require('xmlhttprequest'); var XHR = require('./polling-xhr'); var JSONP = require('./polling-jsonp'); var websocket = require('./websocket');
/** * Export transports. */
exports.polling = polling; exports.websocket = websocket;
/** * Polling transport polymorphic constructor. * Decides on xhr vs jsonp based on feature detection. * * @api private */
function polling(opts){ var xhr; var xd = false; var xs = false; var jsonp = false !== opts.jsonp;
if (global.location) { var isSSL = 'https:' == location.protocol; var port = location.port;
// some user agents have empty `location.port`
if (!port) { port = isSSL ? 443 : 80; }
xd = opts.hostname != location.hostname || port != opts.port; xs = opts.secure != isSSL; }
opts.xdomain = xd; opts.xscheme = xs; xhr = new XMLHttpRequest(opts);
if ('open' in xhr && !opts.forceJSONP) { return new XHR(opts); } else { if (!jsonp) throw new Error('JSONP disabled'); return new JSONP(opts); } }
|