es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿La función BroadcastOn no funciona en el evento de transmisión de Laravel?

Utilicé pusher para mi proyecto. Configuré la difusión según la documentación de Laravel. Cuando disparé mi evento, pusher no funcionó para mí. Pero cuando envío datos desde la consola de pusher, pusher recibe estos datos. También intenté vinkla/pusher. Funciona bien pero la difusión de eventos de Laravel no funciona. No transmite mis mensajes. Por favor ayúdame.

Aquí está mi Evento:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ChatNotification implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($message)
    {
        $this->message = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        dd($this->message);
        $groupId = $this->message->fk_group_id;
        if (!empty($groupId) && !is_null($groupId)) {
            return new PresenceChannel('Room.'.$groupId);
        } else {
            return new PrivateChannel('Chat.'.$this->message->to_id);
        }
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que has configurado correctamente Pusher para tu proyecto de Laravel y también has creado un evento ChatNotification que debería transmitir el mensaje a los canales de Pusher. Sin embargo, te encuentras con un problema donde Pusher no funciona cuando disparas el evento, pero sí funciona cuando envías datos desde la consola de Pusher.

    Puede haber varias razones por las cuales la transmisión de eventos no está funcionando. Aquí hay algunas cosas que puedes verificar:

    1. Verificar las credenciales de Pusher: Asegúrate de haber ingresado correctamente las credenciales de Pusher (app_id, key, secret, cluster) en el archivo .env de tu proyecto Laravel.
    2. Configurar el controlador de transmisión: En el archivo config/broadcasting.php de Laravel, verifica que el driver esté configurado como pusher.

    3. Verificar la conexión de la cola de transmisión de eventos: Asegúrate de haber configurado correctamente la conexión de cola de Laravel para la transmisión de eventos. Por defecto, Laravel utiliza Redis como conexión de cola. Entonces, asegúrate de que Redis esté instalado correctamente y funcionando.

    4. Intenta eliminar dd(): Tienes una instrucción dd() en la función broadcastOn(), la cual puede estar causando el problema. La función dd() mostrará el mensaje y detendrá la ejecución del script. Intenta eliminar esta instrucción para ver si eso resuelve el problema.

    5. Verificar los permisos de transmisión: Asegúrate de que el/los usuario(s) autenticado(s) tengan los permisos necesarios para transmitir eventos a los canales a los que estás intentando enviar.

    Si ninguna de las opciones anteriores ayuda a resolver tu problema, es posible que desees intentar configurar un nuevo proyecto de Laravel y una cuenta de Pusher para ver si obtienes un resultado diferente.

    Espero que esto te ayude a solucionar tu problema con Pusher. ¡Buena suerte!

Comments are closed.