Нет обратного вызова на канале laravel echo с VUE

#php #laravel #vue.js #pusher #laravel-echo

Вопрос:

Последние два дня я застрял на одном и том же. Я перепробовал все возможные решения, но безуспешно. Пожалуйста, проверьте мой приведенный ниже код и укажите мне, где я ошибаюсь.

Ошибка

Pusher : : [«Recd события»,{«событие»:»pusher_internal:подписка завершена»,»канал»:»приватный чат»,»данные»:{}}]

Pusher : : [«Нет обратных вызовов в приватном чате для pusher:подписка завершена»]

Событие

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

    public $message;

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

    /**
     * Get the channels the event should broadcast on.
     *
     * @return IlluminateBroadcastingChannel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('chat');
    }

    public function broadcastAs()
    {
        return 'messageSent';
    }
}

 

Контроллер

     public function store(Request $request)
    {
        $message = new Messages;
        $message->to = $request->input('to');
        $message->from = $request->input('from');
        $message->message = $request->input('message');
        $message->save();

        broadcast(new NewMessageNotification($message));
    }
 

bootstrap.js

 import Echo from "laravel-echo";

window.Pusher = require("pusher-js");

window.Echo = new Echo({
    broadcaster: "pusher",
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    forceTLS: true
});
Pusher.logToConsole = true;
 

прослушиватель в файле vue

   created() {
        // this.getMessages();

        window.Echo.connector.pusher.connection.bind("connected", () => {
            console.log("connected");
        });

        window.Echo.private(`chat`).listen("messageSent", e => {
            console.log(e);
        });
    },
 

Комментарии:

1. Поделитесь своими routes/channels.php, вам необходимо аутентифицировать свои личные каналы. Я предполагаю, что вы получаете несанкционированный доступ к консоли.

2. @АлиРаза Broadcast::channel('chat', function () { return auth()->check(); });

3. верните значение TRUE для тестирования, также убедитесь, что ключи process.env разрешены правильно. Также для тестирования попробуйте жестко кодировать клавиши-толкатели и проверьте, есть ли проблема.

4. По мере того, как клиент получает pusher_internal:subscription_succeeded событие, он будет успешно подписываться на канал. Ошибка указывает на то, что у клиента нет обработчика для получения этого события. Мое решение, приведенное ниже, должно подавить это.

5. @AliRaza нет, это не работает

Ответ №1:

Эта ошибка не должна мешать подписке, но, конечно, вы не хотели бы, чтобы она отображалась в консоли. Чтобы остановить это, вы можете добавить обработчик для события следующим образом:

 window.Echo.private(`chat`).listen("pusher_internal:subscription_succeeded", () => {
            console.log('Successfully subscribed to private-chat);
        });
 

Комментарии:

1. Я также не могу выслушать ответ от толкателя.