'use strict';
|
|
|
|
var debug = function() {};
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
debug = require('debug')('sockjs-client:utils:transport');
|
|
}
|
|
|
|
module.exports = function(availableTransports) {
|
|
return {
|
|
filterToEnabled: function(transportsWhitelist, info) {
|
|
var transports = {
|
|
main: []
|
|
, facade: []
|
|
};
|
|
if (!transportsWhitelist) {
|
|
transportsWhitelist = [];
|
|
} else if (typeof transportsWhitelist === 'string') {
|
|
transportsWhitelist = [transportsWhitelist];
|
|
}
|
|
|
|
availableTransports.forEach(function(trans) {
|
|
if (!trans) {
|
|
return;
|
|
}
|
|
|
|
if (trans.transportName === 'websocket' && info.websocket === false) {
|
|
debug('disabled from server', 'websocket');
|
|
return;
|
|
}
|
|
|
|
if (transportsWhitelist.length &&
|
|
transportsWhitelist.indexOf(trans.transportName) === -1) {
|
|
debug('not in whitelist', trans.transportName);
|
|
return;
|
|
}
|
|
|
|
if (trans.enabled(info)) {
|
|
debug('enabled', trans.transportName);
|
|
transports.main.push(trans);
|
|
if (trans.facadeTransport) {
|
|
transports.facade.push(trans.facadeTransport);
|
|
}
|
|
} else {
|
|
debug('disabled', trans.transportName);
|
|
}
|
|
});
|
|
return transports;
|
|
}
|
|
};
|
|
};
|