2017-08-27 167 views
0

我用laravel 5.3为什么广播频道公众无法使用? Laravel

我做路由/ channels.php这样的:

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

如果我输入的数据车,然后点击提交,它将运行此:

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

它会调用控制器上的功能

像这样的功能:

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

然后,它会调用事件

像这样的事件:

<?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'); 
    } 
} 

在客户端,我这样做:

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

当执行所有的代码,我检查控制台,console.log不显示

为什么不起作用?

如果我看到整个代码,我做,似乎这个过程是正确的

回答

1

class CartNotificationEvent implements ShouldBroadcast丢失。

+0

太好了。有用。非常感谢 –