如何解决为什么 Laravel 广播频道有默认前缀?
目前我正在使用 React Native 开发移动应用程序,作为后端,我使用 Laravel。
作为客户端的渠道客户端库,我使用 Pusher
这是我的频道路由在后端的样子
Broadcast::channel('conversation.{message_id}',function ($user,$id) {
return true;
});
我可以成功广播,但是在推送器调试控制台中,我注意到路由中添加了一个前缀 (private-)。
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- 前缀)成功触发的事件。
请问有什么建议吗?
解决方法
这是用于分隔私人、公共和在线渠道的惯例。
当您订阅带有 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。