51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| '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;
 | |
|     }
 | |
|   };
 | |
| };
 |