// En tu archivo app.js o similar (con Vite / Laravel Mix)
import Echo from 'laravel-echo';
window.Echo = new Echo({
broadcaster: 'reverb', // o 'pusher', 'ably', etc.
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'],
});
// Suscribirse a un canal público
window.Echo.channel('chat-general')
.listen('MensajeEnviado', (e) => {
console.log('Nuevo mensaje:', e.mensaje);
// Aquí actualizas el chat en pantalla
});
// Canal privado (solo usuarios autenticados)
window.Echo.private(`usuario.${userId}`)
.listen('NotificacionRecibida', (e) => {
alert('¡Nueva notificación!: ' + e.texto);
});
// Canal de presencia (ver quién está conectado)
window.Echo.join(`sala.${salaId}`)
.here((users) => {
console.log('Usuarios conectados ahora:', users);
})
.joining((user) => {
console.log(user.name + ' se unió');
})
.leaving((user) => {
console.log(user.name + ' se fue');
});