2017-05-15 4 views
0

J'utilise laravel 5.4 et pusher pour la diffusion d'événements. Je crée une chaîne privée "chatroom".Laravel Echo.join ne fonctionne que Echo.channel et Echo.private ne fonctionne pas

Echo.join('chatroom') /// Work Well 
    .listen('MessagePosted', (e) => { 
      this.messages.push({ 
      body: e.message.body 
     }); 
}); 

Mais cela ne fonctionne pas avec Channel et privé ...

Echo.channel('chatroom') OR 
Echo.private('chatroom') //// Not Working 

Obtenir l'erreur suivante enter image description here

Répondre

0

Vous devez mettre cette méthode à l'intérieur mounted(). Parce que l'erreur a répondu que .here n'est pas une fonction

mounted(){ 
    Echo.private('chat') 
    .listen('ChatEvent', (e) => { 
     console.log(e); 
    }); 

    //Make function for joining and leaving for any users 
    Echo.join('chat') 
    .here((users) => { 
     console.log(users) 
    }) 
    .joining((user) => { 
     console.log(user.name) 
    }) 
    .leaving((user) => { 
     console.log(user.name) 
    }); 

    } 

Et si vous faites le chat privé, puis à routes/channels.php, vous avez à définir/enregistrer un canal nommé chat comme celui-ci -

Broadcast::channel('chat', function($user){ 
    return ['name' => $user->name]; //Return data as your need 
}); 

Hope, ça va aider quelqu'un.