Когда я присоединяюсь к каналу с помощью Laravel Echo, как я могу узнать, когда аутентификация не проходит? - PullRequest
4 голосов
/ 07 ноября 2019

Когда я присоединяюсь к каналу, используя Echo.channel(channelName) или Echo.join(channelName) или Echo.private(channelName), а затем .listen(), как я могу узнать, не прошла ли аутентификация на стороне сервера? Кажется, что все вышеперечисленные функции возвращают объект js, который для всех намерений и целей выглядит как подключенный, даже если это не так. Например:

var obj = Echo.channel('some-channel-that-always-fails-authentication');

Здесь .channel() возвращает SocketIoPresenceChannel, где obj.socket.connected - истина. Между тем, сервер сообщает, что пользователь «не может пройти проверку подлинности для некоторого канала, который всегда терпит неудачу», что я и ожидал, потому что я намеренно возвращаю false в своем определении канала в routes/channels.php.

1 Ответ

1 голос
/ 07 ноября 2019

Вы можете связать событие connect_error с соединителем, чтобы перехватить любые ошибки соединения.

Например:

Echo.connector.socket.on('connect_error', function (error) {
    // Handle the error
});

Затем при подключении к каналу:

Echo.private('some-channel-that-always-fails-authentication');

Это вызовет обратный вызов дескриптора.

Для больше информации о событиях

...