Ошибка эха Pusher / Laravel при подписке на частный канал: недействительное значение Auth для подписки на канал: должно иметь формат «ключ: подпись» - PullRequest
0 голосов
/ 02 января 2019

У меня проблемы с подпиской на частный канал с PusherJS, который находится в Реактивном приложении .

Backend - это Laravel, но я уверен, что backend / frontend технологии не способствуют решению этой проблемы.

Я использую токены JWT для аутентификации, и похоже, что все работает в этой части. Все приложение работает нормально, но я пытаюсь добавить сокет в систему.

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

Frontend

const Socket = new Echo({
  broadcaster: 'pusher',
  key: config.pusher.key,
  cluster: config.pusher.cluster,
  authEndpoint: config.pusher.authEndpoint,
  forceTLS: config.pusher.tls,
  auth: {
    headers: {
      Authorization: `Bearer ${token}`,
    },
  },
});

Socket.private('users.1').listen('newMessage', (data) => {
    console.log(data);
})

Конечная точка аутентификации бэкэнда

public function authorize(Request $request) {
    echo Pusher::socket_auth($request->get('channel_name'), $request->get('socket_id'));
    return;
}

Конечная точка аутентификации работает, данные возвращаются следующим образом:

{auth: ":2535a2ea3a1ee8f461ceef3a95095518c0205949aa981e6f2xxxxx"}

В консоли я вижу, что приложение внешнего интерфейса успешно подключило пушер

Pusher: состояние изменено: подключен -> подключен с новым идентификатором сокета xxxxxx.xxxxxx

Но подписка не удалась

Pusher: Событие отправлено: {"event": "pusher: subscribe", "data": {"auth": ": 2535a2ea3a1ee8f461ceef3a95095518c0205949aa981e6f2xxxxx", "channel": "private-users.1"}}

Pusher: Событие recd: {"event": "pusher: error", "data": {"code": null, "message": "Значение аутентификации для подписки на private-users.1 недопустимо: должно быть формата 'ключ: подпись' "}}

Pusher: Ошибка: {"type": "WebSocketError", "error": {"type": "PusherError", "data": {"code": null, "message": "Значение аутентификации для подписки на private-users.1 недействителен: должен иметь формат 'ключ: подпись' "}}}

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

Журнал отладчика Pusher только говорит мне то же самое:

Значение аутентификации для подписки на private-users.1 недопустимо: должно иметь формат «ключ: подпись»

Я отлаживал это несколько часов и понятия не имею, куда идти дальше.

1 Ответ

0 голосов
/ 02 января 2019

Ваша конечная точка аутентификации не отвечает правильно. Правильно ли настроены сервер, ваш ключ, секрет и appID? Как насчет кластера? Правильно ли настроены сервер и клиент?

...