【问题标题】:Conditional Broadcasting in LaravelLaravel 中的条件广播
【发布时间】:2016-06-10 16:32:08
【问题描述】:

在事件中使用implement ShouldBroadcast 时,是否有一种简单的有条件广播的方法?例如:

/**
 * Get the channels the event should be broadcast on.
 *
 * @return array
 */
public function broadcastOn()
{
    if ($x == 2) return;
    return ['test_channel'];
}

不幸的是,上面的代码仍然创建了排队的作业,它没有成功并继续尝试它但不能,因为它没有通道名称。有没有一种简单的方法可以抑制使用$x == 2 创建的作业?

【问题讨论】:

  • 那行得通,谢谢,我太笨了。
  • 很高兴为您提供帮助!刚刚将其发布为下面的答案。

标签: php laravel socket.io pusher


【解决方案1】:

只是添加到这一点,因为 Laravel 现在支持在涵盖此场景的事件上使用 broadcastWhen() 方法。

例如;

// on an event class...
public function broadcastWhen(){
    // check for whatever here
    return $bool;
}

【讨论】:

    【解决方案2】:

    broadcastOn 函数必须返回一个数组。

    因此,如果您不想在任何频道上广播,只需返回一个空数组即可。

    if ($x == 2) return [];
    

    【讨论】:

    • 在 Laravel7 上试过,但没有用。错误:Expected at least one channel
    • @slayerbleast 很高兴知道。 L7可能是新的吗?我的意思是,这个答案已经快四年了。
    • 是的,他们肯定改变了一些东西来抛出这个异常。我只是想写下来以供将来观看此问题的人使用。我使用public function broadcastWhen() 方法解决了这个问题,就像其他发布的答案一样。
    猜你喜欢
    • 2021-01-19
    • 2022-09-23
    • 2016-06-12
    • 2017-05-04
    • 2023-03-04
    • 2017-11-07
    • 2020-02-29
    • 1970-01-01
    • 2020-07-28
    相关资源
    最近更新 更多