【问题标题】:Why laravel broadcast channel has default prefix?为什么 laravel 广播频道有默认前缀?
【发布时间】:2021-05-26 05:35:23
【问题描述】:

目前我正在使用 react native 开发一个移动应用程序,作为后端我使用的是 Laravel。

作为客户端的频道客户端库,我使用Pusher

这就是我的频道路径在后端的样子

Broadcast::channel('conversation.{message_id}', function ($user,$id) {
    return true;
});

我可以成功广播,但是在推送器调试控制台中,我注意到在路由中添加了前缀(私有)。

这是我收听事件的方式

                const pusher = new Pusher('XXXX', {
                    cluster: 'eu',
                    authEndpoint: 'http:backend.test/api/broadcasting/auth',
                    auth: {
                        headers: {
                            Authorization: `Bearer `+token,
                            Accept: 'application/json',
                        },
                    },
                });
                const channel = pusher.subscribe('private-conversation.7');
                channel.bind('App\\Events\\MessageSent', function (data) {
                    console.log("event")
                    console.log(data);
                });

正如您在我的代码中看到的,我订阅了“private-conversation.7”,推送器调试控制台显示客户端已成功订阅频道,但问题是客户端没有监听事件,当我在 pusher 中创建一个自定义事件并将“conversation.7”设置为频道名称(我删除了 private- 前缀)成功触发的事件。

有什么建议吗?

【问题讨论】:

    标签: laravel react-native pusher


    【解决方案1】:

    这是用于分隔私人、公共和在线频道的约定。

    当您订阅带有private-前缀的频道时,它将需要身份验证过程。

    Laravel 会在广播时自动为频道名称添加private- 前缀。

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\PrivateChannel
     */
    public function broadcastOn()
    {
        return new PrivateChannel('orders.'.$this->order->id);
    }
    

    这里是参考文档:

    https://pusher.com/docs/channels/using_channels/private-channels

    【讨论】:

      猜你喜欢
      • 2019-04-22
      • 2017-10-20
      • 2020-05-17
      • 2019-05-16
      • 2021-11-08
      • 2022-07-18
      • 2018-10-10
      • 2023-03-17
      相关资源
      最近更新 更多