我无法使用Pusher和Laravel广播获得私人频道的支持。在routes/channels.php
文件中,似乎没有任何函数被触发:
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
Broadcast::channel('testevent.{id}', function ($user, $id)
{
//This never fires
dd("ENTERED HERE");
return TRUE;
});
在BroadcastServiceProvider.php
中,我有:
public function boot()
{
Broadcast::routes(['middleware' => 'auth:api']);
require base_path('routes/channels.php');
}
Javascript file
在客户端(使用Echo)处理数据:
Echo.private('testevent.1').listen('TestEvent', function(e)
{
console.log(e);
});
使用公共频道非常完美。但是,一旦我尝试创建专用通道,数据就不会发送到侦听数据的客户端。可能是什么问题?
感谢您的帮助和指导!
编辑:
在Pusher Web控制台中,似乎没有客户端已预订“ testevent.1”通道。如果我将其更改为公共频道,则订阅将被注册。
答案 0 :(得分:0)
在Laravel Broadcast文档的“ Defining authorization callbacks”段中,您可以看到,私人频道需要先对用户进行身份验证,然后才能收听。
因此,在您的routes/channels.php
中,您需要在其中编写身份验证逻辑,例如:
Broadcast::channel('testevent.{id}', function ($user, $id)
{
return $user->id === $user::findOrFail($id);
});