|
|
- '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;
- }
- };
- };
|