Я пытаюсь транслировать события с помощью Laravel Echo (с помощью Vue). Это моя установка:
BroadcastServiceProvider
class BroadcastServiceProvider extends ServiceProvider
{
public function boot()
{
Broadcast::routes(['middleware' => ['jwt.auth']]);
require base_path('routes/channels.php');
}
}
Эхо-конфигурация
window.Echo = new Echo({
broadcaster: 'pusher',
key: '...',
cluster: 'eu',
encrypted: true,
namespace: 'App.Events',
authEndpoint: `${window.location.origin}/broadcasting/auth`,
auth: {
headers: {
'Authorization': `Bearer ${localStorage.getItem('quiz-token')}`
}
}
})
компонент Main Vue, где должно происходить вещание
mounted () {
this.gameKey = 'game.' + this.$route.params.id
Echo.join(this.gameKey)
.here((users) => {
console.warn(users.length + ' online in game ' + this.gameKey)
})
}
channels.php
Broadcast::channel('game.{gameId}', function ($user, $gameId) {
// Auth validation here
});
Теперь проблема в том, что когда я запускаю игру, я получаю 401 TOKEN_INVALID Ошибка:
Однако, если я обновляю страницу вручную (F5), я внезапно подключаюсь к Pusher, и все работает нормально.
Я подозреваю, что это действительно связано с тем, что токены являются недействительными, но я понятия не имею, почему - я тестирую в окне инкогнито, поэтому теоретически я вхожу в систему впервые, что означает, что токены совершенно новые.
Буду признателен за любую помощь.