2017-08-27 2 views
0

J'utilise Laravel 5.3Pourquoi la chaîne de diffusion publique ne fonctionne pas? Laravel

Je fais des itinéraires/channels.php comme ceci:

<?php 
Broadcast::channel('messages', function() { 
    return true; 
}); 

Si je saisir le panier de données et cliquez sur soumettre, elle se déroulera ceci:

this.$http.post(window.BaseUrl + '/guest/add-notification', {cart_data: JSON.stringify(data)}); 

il fonctionnera appel sur le contrôleur

la fonction comme ceci:

public function addNotification(Request $request){ 
    $input = $request->only('cart_data'); 
    $data = json_decode($input['cart_data'], true); 
    event(new CartNotificationEvent($data)); 
} 

Ensuite, il fait appel

L'événement comme celui-ci:

<?php 
namespace App\Events; 
use Illuminate\Broadcasting\Channel; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Broadcasting\PrivateChannel; 
use Illuminate\Broadcasting\PresenceChannel; 
use Illuminate\Broadcasting\InteractsWithSockets; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 
class CartNotificationEvent 
{ 
    use InteractsWithSockets, SerializesModels; 
    public $data; 
    public function __construct($data) 
    { 
     $this->data = $data; 
    } 
    public function broadcastWith() 
    { 
     return [ 
      'message' => $this->data, 
     ]; 
    } 
    public function broadcastAs() 
    { 
     return 'newMessage'; 
    } 
    public function broadcastOn() 
    { 
     return new Channel('messages'); 
    } 
} 

Sur le client, je fais comme ceci:

Echo.channel('messages') 
.listen('.newMessage', (message) => { 
    console.log('test') 
    console.log(message); 
}); 

Quand tout le code est exécuté, je vérifier sur la console, le console.log ne pas afficher

Pourquoi cela ne fonctionne-t-il pas?

Si je vois tout le code que je fais, il semble que le processus est correct

Répondre

1

class CartNotificationEvent implements ShouldBroadcast manque.

+0

Très bien. Ça marche. Merci beaucoup –