29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
import Echo from 'laravel-echo';
|
|
|
|
import Pusher from 'pusher-js';
|
|
window.Pusher = Pusher;
|
|
|
|
if (document.querySelector('[data-requires-reverb]')) {
|
|
window.Echo = new Echo({
|
|
broadcaster: 'reverb',
|
|
key: import.meta.env.VITE_REVERB_APP_KEY,
|
|
wsHost: import.meta.env.VITE_REVERB_HOST,
|
|
wsPort: import.meta.env.VITE_REVERB_PORT ?? 80,
|
|
wssPort: import.meta.env.VITE_REVERB_PORT ?? 443,
|
|
forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https',
|
|
enabledTransports: ['ws', 'wss'],
|
|
});
|
|
|
|
// Handle WebSocket connection status events
|
|
const dispatchStatus = (connected) => {
|
|
window.dispatchEvent(new CustomEvent('ws-status', {
|
|
detail: { connected }
|
|
}));
|
|
};
|
|
|
|
window.Echo.connector.pusher.connection.bind('connected', () => dispatchStatus(true));
|
|
window.Echo.connector.pusher.connection.bind('unavailable', () => dispatchStatus(false));
|
|
window.Echo.connector.pusher.connection.bind('disconnected', () => dispatchStatus(false));
|
|
window.Echo.connector.pusher.connection.bind('failed', () => dispatchStatus(false));
|
|
}
|