Неожиданная ошибка в подписке на частный канал Pusher - PullRequest
0 голосов
/ 03 февраля 2019

В среде JS + PHP (усадьба) подписка на публичный канал в Pusher работает нормально (также проверяет мои учетные данные).Сбой подписки на частный канал, учитывая следующий код:

 let theAppId = 'XXXYYYZZZ'; //fake credentials shown here...
 pusher = new Pusher(theAppId, {
    authEndpoint: '/pusher/auth',
    cluster: 'us2',
    forceTLS: true,
    encrypted: true,
    auth: {headers: {'X-CSRF-Token': self.csrf}}
});
channel = pusher.subscribe('private-channel1');

Мой код авторизации вызывается и возвращает действительный идентификатор авторизации:

{\"auth\":\"c289b20c368bd23a4a85:d55f1f1495f0d252b5fde1d69e2e6d5b4b161ca49cab5ad218d65111ae307a12\"}"}

После успешного подключения Pusher.log показывает эту ошибку:

Pusher : Event recd : {"event":"pusher:error","data":{"code":null,"message":"Invalid key in subscription auth data: '{\"auth\"'"}}
pusher.min.js:8 Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Invalid key in subscription auth data: '{\"auth\"'"}}}

Я не могу найти упоминания об этой проблеме в документации Pusher.Кто-нибудь видел это, или есть идеи, как решить?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Спасибо за Хосама за подсказку.Проблема для вас, пользователей Laravel, легко решается.Обратите внимание, что ответ от вашего маршрута аутентификации - json.Возвращаемое значение для создания действительного ключа авторизации из pusher->socket_auth является строкой в ​​кодировке json.Чтобы решить эту проблему, просто json_decode ответ socket_auth на ассоциативный массив, затем передайте его в ответ контроллера json:

$thePusher = new \Pusher\Pusher(
   env('PUSHER_APP_KEY'),env('PUSHER_APP_SECRET'),env('PUSHER_APP_ID'),
      ['cluster'=>env('PUSHER_CLUSTER'),'useTLS'=>true]
);

$theResult=$thePusher->socket_auth(
   $aRequest>input('channel_name'),
   $aRequest->input('socket_id'));

return response()->json(json_decode($theResult,true),200);
0 голосов
/ 04 февраля 2019

Наиболее вероятной причиной этой ошибки является то, что хеш auth был "зашифрован" перед его возвратом с сервера.Вот почему в сообщении об ошибке упоминается неверный ключ : значение не может быть проанализировано как объект JSON.

Чтобы устранить эту проблему, серверу необходимо вернуть обычный JSON.

...