cheetah-framework
Version:
Cheetah Framework JS used in all our applications
65 lines (53 loc) • 1.49 kB
JavaScript
import Echo from 'laravel-echo'
import Pusher from 'pusher-js'
import config from '@cheetah/config'
window.echoActive = false
function guessDriver () {
if (window.Cheetah?.broadcastDriver) {
return window.Cheetah?.broadcastDriver
}
if (window.Cheetah?.reverb?.key) {
return 'reverb'
}
return window.Cheetah?.pusher?.key ? 'pusher' : null
}
const driver = guessDriver()
if (config.disableEcho !== true && driver) {
let echoOptions = null
if (driver === 'reverb') {
// Laravel Reverb
const key = window.Cheetah?.reverb?.key
const wsHost = window.Cheetah?.reverb?.host
if (key && wsHost) {
echoOptions = {
broadcaster: driver,
key,
wsHost,
forceTLS: !!window.Cheetah?.reverb?.useTLS,
enabledTransports: ['ws', 'wss']
}
} else {
console.error('Missing reverb config for Echo')
}
} else if (driver === 'pusher') {
// Pusher-js
const key = window.Cheetah?.pusher?.key
const cluster = window.Cheetah?.pusher?.cluster
if (key && cluster) {
echoOptions = {
broadcaster: 'pusher',
key,
cluster,
encrypted: true
}
window.Pusher = Pusher
window.Pusher.logToConsole = _.get(window.Cheetah, 'pusher.debug', false)
} else {
console.error('Missing pusher config for Echo')
}
}
if (echoOptions) {
window.Echo = new Echo({ ...echoOptions, ...config.echoOptions })
window.echoActive = true
}
}