Laravel广播

时间:2017-06-06 06:47:45

标签: php laravel pusher

我的情景

我试图在没有使用laravel echo的情况下使用pusher工作,一切都在公共频道上工作,但是当我在前端的broadcastOn()方法切换到私人频道时,前端没有'再挑选任何东西了。它作为私人频道记录在我的推送应用程序事件日志中,但是在前端只是按下了sais no。

我已经为这样的频道代码设置并返回true:

Broadcast::channel('application', function ($post, $username) {
    if(true){
        return true;
    }
});

这是我的活动代码:

public function broadcastOn()
{
    return new PrivateChannel('application');
}

该类实现ShouldBroadcast,最后这是我的前端代码:

 <script>
    //instantiate a Pusher object with our Credential's key
    var pusher = new Pusher('MY_KEY', {
        cluster: 'en',
        encrypted: true
    });

    //Subscribe to the channel we specified in our Laravel Event
    var channel = pusher.subscribe('application');

    //Bind a function to a Event (the full Laravel class)
    channel.bind('App\\Events\\PostMessage', function(){
        console.log('Event Logged');
    });
</script>

我的问题

为什么我的推杆前端代码没有检测到我的私人广播?

1 个答案:

答案 0 :(得分:1)

呵呵呵我觉得我找到了: https://pusher.com/docs/client_api_guide/client_private_channels

您需要在频道名称前添加'private-'前缀。 Echo为您自动做的事情之一!

以下是其余的参考资料。最后的建议仍然存在,并且至少可以帮助您调试此问题; - )

在Laravel中使用Pusher 而不使用 Echo时要检查的一些事项:

  • 确保正确设置了群集。我刚检查了自己的 仪表板并将mt1作为群集。它可能是默认值 过时。

  • Echo的设置是为了做很多看不见的事情。其中之一就是 将易于记忆的字符串转换为完整的命名空间 与Pusher沟通的同行。所以,如果你想跳过 Echo,你想确保你在1对1上模仿这种行为,或者 否则它会破裂。

在最后一点上,可能需要做这样的事情:

var channel = pusher.subscribe('App/Events/application');
  • 尝试复制文档1对1,添加一些代码来制作 渠道独特。我不知道内部,但它可能是 PrivateChannel需要一个唯一的参数,并且不起作用 无:

像这样:

public function broadcastOn()
{
    return new PrivateChannel('order.'.$this->update->order_id);
}

然后是你的频道:

Broadcast::channel('order.{orderId}', function ($user, $orderId) {
    return $user->id === Order::findOrNew($orderId)->user_id;
});

首先尝试使用Echo,让所有内容都按照文档运行。它提供了很大的便利。然后从那里分解。至少那种方式你知道你已经掌握了所有的基础知识,你的应用程序和Pusher之间的通信正在工作! : - )

这是我现在所能想到的,而不是自己编码!希望其中一个适合你。