Laravel Echo + Pusher subscription_error на частном канале

Мне не удается заставить работать эхо и пушер при использовании частных каналов, гуглил два дня и нашел нада.

Кажется, что происходит что-то вроде проблемы с аутентификацией (я использую базовую аутентификацию Laravel), потому что я могу подписаться на общедоступные каналы

маршруты / channels.php

Broadcast::channel('private-ci-received-{userId}', function ($user, $userId) {
return (int) $user->id === (int) $userId;
});

Broadcast::channel('private-ci-received-{toUserId}', function ($currentUser, $toUserId) {
return true;
});

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,
logToConsole: true,
encrypted: true,
});

default.blade.php (основной макет)

        Pusher.logToConsole = true;
Echo.logToConsole = true;

Echo.private('ci-received-{{ Auth::user()->id}}')
.listen('.CIReceived', (e) => {
console.log(e);
});

Что печатается на консоли:

Pusher : No callbacks on private-ci-received-1 for pusher:subscription_error

Это довольно общая ошибка, поэтому в целях отладки я пытался связать ошибку, используя Pusher (не laravel echo)

var pusher = new Pusher('MYSECRETAPPKEYHERE', {
cluster: 'us2',
forceTLS: true
});

var channel = pusher.subscribe('private-ci-received-1');
channel.bind('pusher:subscription_error', function(data) {
console.log(data);
});

вывод console.log (data)

JSON returned from webapp was invalid, yet status code was 200

По умолчанию authEndPoint — / broadcasting / auth IIRC. Я думаю, что он ожидает вернуть JSON, но вместо этого он возвращает HTML-код с моей страницы.

Эти маршруты создаются самим фреймворком, и из того, что я прочитал, Laravel echo и Laravel Auth должны прекрасно работать вместе без особых хлопот.

Мой файл .env правильный, я использую толкатель в качестве драйвера вещания, и BroadcastServiceProvider должным образом не закомментирован.

Кто-нибудь может пролить свет на этот вопрос? Спасибо

0

Решение

Задавать APP_DEBUG=true в вашем .env файл и проверьте HTTP-ответ вашего маршрута авторизации в разделе сети инструментов разработчика вашего браузера. Если аутентификация прошла успешно, ваше приложение laravel должно ответить JSON следующим образом:

{"auth": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

Если есть ошибка, она покажет вам в ответе, так как вы установили для режима отладки значение true.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]