taro-sockjs-client
Version:
sockjs-client for Taro
48 lines (42 loc) • 1.25 kB
JavaScript
import debug from '../utils/debug'
export default function (availableTransports) {
return {
filterToEnabled: function (transportsWhitelist, info) {
let 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
},
}
}