For me it works fine.
Here is my configuration.
// .env
REVERB_HOST=localhost
REVERB_PORT=8080
REVERB_SCHEME=http
VITE_REVERB_APP_KEY=${REVERB_APP_KEY}
VITE_REVERB_HOST=${REVERB_HOST}
VITE_REVERB_PORT=${REVERB_PORT}
VITE_REVERB_SCHEME=${REVERB_SCHEME}
// bootstrap.js
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
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'],
});
// a view with AlpineJS
x-data="{
loggedInUserIds: [],
}"
x-init="
Echo.join('speed-dating')
.here((users) => {
loggedInUserIds = users.map((user) => user.id);
})
.joining((user) => {
loggedInUserIds.push(user.id);
})
.leaving((user) => {
loggedInUserIds.splice(loggedInUserIds.indexOf(user.id), 1);
})
.error((error) => {
console.error(error);
});
"