Laravel广播
问题描述:
我的情况Laravel广播
我试着让laravel无需使用laravel回声与推进工作,一切工作在一个公共通道,但是当我切换到专用通道在我的事件broadcastOn()
方法推进器前端不再提取任何东西了。它作为私人频道登录到我的推送应用程序事件日志中,但在前端的推送者只是没有。
我已经建立了和这样的信道编码返回真:
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>
我的问题
为什么我的推送器前端代码没有检测到我的私人广播?
答
呵呵呵,我想我找到了: https://pusher.com/docs/client_api_guide/client_private_channels
您需要'private-'
前缀通道名称。 Echo为你自动做的一件事!
以下是其余供参考。最终的建议仍然有效,并会一直至少帮你调试这个问题;-)
你想用推杆时检查有几件事情没有Echo
在Laravel:
确保您的集群已正确设置。我刚刚检查了自己的 仪表板,并将
mt1
作为群集。这可能是默认值 已过时。回声被设置做很多事情在视线之外。其中之一是 转换容易记住字符串到他们的全名命名空间 与Pusher沟通时的对手。所以,如果你想跳过 回声,你想确保你模仿这种行为1对1,或 否则它会中断。
在那最后一个音符,它可能是你需要做的是这样的:
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之间的通信正在进行中! :-)
这就是我现在所能想到的,而不需要自己编码!希望他们中的一个对你有用。
嗯,感谢这一切,病重复它再次(强调删除了应用程序,并决定尝试回声,得到它的工作),看看是否是这样的情况。我不想使用回声的唯一原因是因为他们没有记录将每段JavaScript代码放在哪里。我设法找到了另一个网站并查看代码。但主要原因是我不太熟悉vue components/javascript本身。但是,再次感谢您对此进行了测试并回馈给您! –
重新审视一下,并通过一些额外的更改,我能够得到它的工作!非常感谢它为此提供的帮助。巨大的学习曲线 –
你是受欢迎的!祝你好运:) –