Я использую Laravel 6.0 & Laravel -echo & Pusher и пытаюсь создать приватные каналы
- Я раскомментировал
BroadcastServiceProvider
в приложении. php config - Поскольку я использую аутентификацию JWT, я заменил промежуточное программное обеспечение в методе
Broadcast::routes
следующим образом: Broadcast::routes(['middleware' => ['api', 'auth:api']]);
- Мои каналы. php выглядит так:
Broadcast::channel('user.{id}', function ($user, $id) {
info('Broadcast channel user.{id}', ['id' => $id, 'userId' => $user->id]);
return (int) $user->id === (int) $id;
});
Моя javascript часть:
window.Pusher = require('pusher-js')
console.log('Creating echo')
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.VUE_APP_PUSHER_KEY,
cluster: process.env.VUE_APP_PUSHER_CLUSTER,
forceTLS: process.env.VUE_APP_PUSHER_FORCE_TLS,
authEndpoint: `${process.env.VUE_APP_BASE_URL}broadcasting/auth`,
auth: {
headers: {
'Authorization': `Bearer ${auth.getToken()}`
}
}
})
const userId = auth.getUser().id
const channelName = `user.${userId}`
console.log('Trying to listen to ' + channelName) // This shows "Trying to listen to user.1"
window.Echo.private(channelName)
.listen('.check.completed', (data) => {
console.log(JSON.stringify(data))
})
window.Echo.channel('sample_public_channel') // I'm using pusher and I can see that Echo subscribed to public channel, which is good
Итак, что происходит: веб-интерфейс отправляет POST-запрос на http://mydomain/broadcasting/auth, передавая socket_id
и channel_name: private-user.1
Это всегда возвращает 200OK, и я не вижу журналов в laravel, что вызывается обратный вызов Broadcast::channel('user.{id}'...
.
Я никогда не вижу в консоли Pusher, что мое приложение подписано на частный канал.
Я попытался очистить кеш, удалить промежуточное ПО (положить пустой массив промежуточного ПО) и много разные вещи. Я только получаю некоторую реакцию, когда комментирую Broadcast::routes
, тогда я получил 404 от запроса аутентификации.