J'ai ma clé poussoir définie et initialisée dans Laravel 5.3. Lorsque je le teste sur mon environnement local, cela fonctionne. Lorsque j'essaye d'exécuter exactement le même code sur notre environnement de production, j'obtiens cette erreur:

Pusher : Error : {"type":"WebSocketError","error":{"type":"PusherError","data":{"code":null,"message":"Auth info required to subscribe to private-App.User.16"}}}

J'ai confirmé que la clé Pusher est identique sur ma version locale et sur ma production.

Le WS s'initialise sur les deux environnements de la même manière:

wss://ws.pusherapp.com/app/264P9d412196d622od64d?protocol=7&client=js&version=4.1.0&flash=false

La seule différence que je peux voir, c'est que lorsque notre serveur de production contacte la route "diffusion / auth" de Laravel, il reçoit simplement true dans le corps de la réponse.

Lorsque mes contacts locaux "diffusent / auth", cela apparaît dans la réponse:

{auth: "22459d41299d6228d64d:df5d393fe37df0k3832fa5556098307f145d7e483c07974d8e7b2609200483f8"}

Dans mon BroadcastServiceProvider.php:

public function boot()
{
    Broadcast::routes();

    // Authenticate the user's personal channel.
    Broadcast::channel('App.User.*', function (User $user, $user_id) {
        return (int)$user->id === (int)$user_id;
    });
}

Qu'est-ce qui pourrait faire que la route broadcast/auth renvoie simplement true au lieu de l'authentification attendue?

7
eComEvo 28 juil. 2017 à 01:10

2 réponses

Le problème se produit parce que vous n'avez pas défini le bon BROADCAST_DRIVER dans votre fichier de production .env (qui est redis par défaut).

# before
BROADCAST_DRIVER=redis

# after
BROADCAST_DRIVER=pusher
1
eightyfive 30 nov. 2018 à 04:33

Modifier Ceci provient de la documentation de la version 5.5, non applicable ici.

Je pense que le problème est peut-être lié à l'utilisation du caractère générique «*» dans le nom de la chaîne.

J'utilise ce qui suit en local et en production:

Broadcast::channel("servers.{id}", function (Authenticatable $user, $id) {
    return (int)$user->getAuthIdentifier() === (int)$id;
});
1
18 janv. 2018 à 23:13