为啥 laravel 广播频道有默认前缀?

     2023-02-21     79

关键词:

【中文标题】为啥 laravel 广播频道有默认前缀?【英文标题】: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- 前缀)成功触发的事件。

有什么建议吗?

【问题讨论】:

【参考方案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

【讨论】:

Laravel 使用 Socket.io 广播到私人频道

】Laravel使用Socket.io广播到私人频道【英文标题】:LaravelBroadcasttoaprivatechannelusingSocket.io【发布时间】:2018-03-0320:06:03【问题描述】:我正在尝试使用Laravel作为后端API客户端和SPA作为前端创建一个实时通知系统,我使用React作为前... 查看详情

无法使用 Redis 和 Laravel 5.3 在私有频道上广播通知

】无法使用Redis和Laravel5.3在私有频道上广播通知【英文标题】:NotAbletoBroadcastnotificationsonPrivateChannelwithRedis&Laravel5.3【发布时间】:2017-09-2318:51:48【问题描述】:我正在使用Laravel-Redis-Socketio-LaravelEcho制作实时通知。到目前为止... 查看详情

无法广播客户端事件(连接未订阅频道私聊)

...【发布时间】:2021-12-2513:24:01【问题描述】:我正在使用Laravel和Nuxt(前端和后端分开)构建一个实时聊天应用程序>Pusher和Laravel-Echo,我已经为Laravel配置了pusher,它工作正常 查看详情

Laravel 广播认证

】Laravel广播认证【英文标题】:LaravelBroadcastauthentication【发布时间】:2018-04-1322:36:24【问题描述】:如何使用自定义身份验证方法对频道的用户进行身份验证?例如,在我的应用程序中,我为我的API使用令牌身份验证(存储在... 查看详情

Laravel Echo - 允许访客连接到出席频道

】LaravelEcho-允许访客连接到出席频道【英文标题】:LaravelEcho-Allowgueststoconnecttopresencechannel【发布时间】:2017-09-0614:21:30【问题描述】:我正在使用laravel-echo-server运行LaravelEcho来广播事件。我有一个用户计数器频道,它显示应用... 查看详情

Laravel Echo + VueJS 广播/认证问题

】LaravelEcho+VueJS广播/认证问题【英文标题】:LaravelEcho+VueJSbroadcast/authproblem【发布时间】:2020-03-0618:49:25【问题描述】:我使用LaravelEcho和pusher作为我的服务器。它已经在公共频道上运行。这是我的laravelecho监听器imagelink的照片现... 查看详情

laravel 广播多后卫

】laravel广播多后卫【英文标题】:laravelbroadcastingformultipleguard【发布时间】:2018-12-0301:30:28【问题描述】:我有以下为我的应用程序定义的身份验证保护admins、designers、customers等。默认保护是designerguard。我希望每个guard都有自己... 查看详情

Laravel 事件未广播

】Laravel事件未广播【英文标题】:LaraveleventnotbeingBroadcast【发布时间】:2017-05-0405:51:20【问题描述】:我正在为应用开发聊天/消息功能。当用户发送消息时,我希望触发并广播特定事件。然后,我希望LaravelEcho使用pusher驱动程序... 查看详情

laravel Echo 不监听频道和事件

】laravelEcho不监听频道和事件【英文标题】:laravelEchodoesnotlistentochannelandevents【发布时间】:2017-08-2108:30:36【问题描述】:为了在频道上广播事件,我使用了laravelEcho、redis和socket-io。这是我的活动:classChatNewMessageimplementsShouldBroa... 查看详情

Laravel Sanctum 和使用 Pusher.js 进行广播(401、419 错误)

】LaravelSanctum和使用Pusher.js进行广播(401、419错误)【英文标题】:LaravelSanctum&broadcastingwithPusher.js(401,419error)【发布时间】:2022-01-0222:31:08【问题描述】:4天来,我一直在尝试连接到私人频道。结合了我能找到的所有可能的... 查看详情

Laravel PHPUnit:如何测试 url 前缀

】LaravelPHPUnit:如何测试url前缀【英文标题】:LaravelPHPUnit:howtotesturlprefix【发布时间】:2015-11-1009:11:02【问题描述】:我正在学习构建一些PHPUnit测试。当不使用前缀时,我的应用程序会重定向到默认语言,例如:www.myapp.com有301... 查看详情

如何使用频道广播消息

】如何使用频道广播消息【英文标题】:Howtobroadcastmessageusingchannel【发布时间】:2016-07-2420:28:43【问题描述】:我是新手,我正在尝试创建一个简单的聊天服务器,客户端可以在其中向所有连接的客户端广播消息。在我的服务器... 查看详情

为啥 BroadCastEvent 在 Laravel 中排队?如何阻止它?

】为啥BroadCastEvent在Laravel中排队?如何阻止它?【英文标题】:WhyBroadCastEventarequeuedinLaravel?Howtostopthat?为什么BroadCastEvent在Laravel中排队?如何阻止它?【发布时间】:2017-05-1410:20:48【问题描述】:我正在做一个需要实时广播经纬... 查看详情

为啥 Laravel 默认通过 POST 注销(而不是 GET)? [复制]

】为啥Laravel默认通过POST注销(而不是GET)?[复制]【英文标题】:WhydoesLaravel,bydefault,logoutviaPOST(AsopposedtoGET)?[duplicate]为什么Laravel默认通过POST注销(而不是GET)?[复制]【发布时间】:2016-12-1121:53:49【问题描述】:在Laravel应用程... 查看详情

Laravel 8.x 顺风前缀

】Laravel8.x顺风前缀【英文标题】:Laravel8.xTailwindPrefix【发布时间】:2021-11-1918:59:17【问题描述】:Tailwind允许在tailwind.config.js中设置前缀。Referencehere.我正在开发一个同时使用Bootstrap和Tailwind的Laravel项目,由npm管理。我为Tailwind... 查看详情

没有前缀名称的 Laravel 路由

】没有前缀名称的Laravel路由【英文标题】:Laravelroutewithoutprefixname【发布时间】:2018-11-3013:49:10【问题描述】:我正在尝试使用Laravel登陆页面路由。例如Laravel默认带你进入欢迎页面,斜杠后面没有url文本。Route::get(\'/\',function()r... 查看详情

Laravel 5 多语言网站,网址中带有语言前缀

】Laravel5多语言网站,网址中带有语言前缀【英文标题】:Laravel5multilanguagesitewithlanguageprefixintheurl【发布时间】:2016-06-0501:51:01【问题描述】:所以我需要在网站上使用多种语言,网址如下:mysite/en/languagemysite/it/languagemysite/es/lan... 查看详情

laravel - 为关系添加条件

】laravel-为关系添加条件【英文标题】:laravel-addconditionstorelationships【发布时间】:2015-11-2503:18:29【问题描述】:我有两个模型“频道”和“时间表”,其中一个频道有很多时间表(一对多)。我想要做的是获取包含今天时间表... 查看详情