【问题标题】:Laravel BroadcastingLaravel 广播
【发布时间】:2017-11-07 01:31:09
【问题描述】:

我的情景

我试图让 laravel 在不使用 laravel echo 的情况下与推送器一起工作,一切都在公共频道上运行,但是当我在前端的事件推送器的 broadcastOn() 方法中切换到私人频道时不会选择有什么了。它作为私人频道记录在我的推送应用程序事件日志中,但前端的推送者只是拒绝。

我已经为通道代码设置并返回 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>

我的问题

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

【问题讨论】:

    标签: php laravel pusher


    【解决方案1】:

    呵呵,我想我找到了: https://pusher.com/docs/client_api_guide/client_private_channels

    您需要在频道名称前加上'private-'。 Echo 自动为您做的一件事!

    这是其余的供参考。最后的建议仍然有效,至少可以帮助您调试此问题 ;-)


    在 Laravel 中使用 Pusher 没有 Echo 时要检查的几件事:

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

    • Echo 被设置为在看不见的地方做很多事情。其中之一是 将易于记忆的字符串转换为其完整的命名空间 与 Pusher 通信时的对应方。所以如果你想跳过 回声,您要确保一对一地模拟这种行为,或者 否则它会坏掉。

    最后一点,您可能需要执行以下操作:

    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 之间的通信正在工作! :-)

    这就是我现在能想到的全部内容,而无需亲自编写代码!希望其中一个对你有用。

    【讨论】:

    • 嗯,谢谢你,我重做了一遍(压力很大,删除了应用程序并决定尝试 echo,让它工作)看看是否是这种情况。我不想使用 echo 的唯一原因是因为他们没有很好地记录每段 javascript 代码的放置位置。我设法通过转到另一个站点并查看代码来找出答案。但主要原因是我对 vue 组件/javascript 本身不太熟悉。但是感谢您再次对此进行测试并回复您!
    • 再看一遍,通过一些额外的更改,我就可以让它工作了!非常感谢这对它有很大帮助。巨大的学习曲线
    • @Stan Smulders,看来你可以帮助我。看看这个:stackoverflow.com/questions/45877837/…
    猜你喜欢
    • 2018-04-13
    • 2023-03-04
    • 2018-12-03
    • 2017-12-26
    • 2018-01-06
    • 2016-06-12
    • 2017-05-04
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多