首先我想说,我知道关于这个主题真的有很多话题。我几乎都阅读了它们,但没有成功。
我正在使用 Laravel Echo 和 Pusher 来使 websockets 工作。这实际上适用于普通(阅读:非私人)频道。我收到了状态良好的 Javascript 对象。
问题开始的地方是当我尝试在私人频道上发送内容时。我在控制台中收到以下警告:
Pusher : Couldn't get auth info from your webapp : 500
我猜这是由于验证私人频道的问题。我试图在以下地方对它们进行身份验证:
广播服务提供者:
class BroadcastServiceProvider extends ServiceProvider
{
public function boot()
{
Broadcast::routes();
/*
* Authenticate the user's personal channel...
*/
Broadcast::channel('notification.{userid}', function ($user, $userid) {
return true;
});
}
}
或路由/channels.php:
<?php
use Illuminate\Support\Facades\Broadcast;
Broadcast::channel('notification.{userid}', function ($user, $userid) {
return (int) $user->id === (int) $userId;
});
但这些都不起作用。我还尝试将通配符更改为 a *
,而不是 the ,{userid}
但这也不起作用。
但是,Pusher 以正常的形式显示事件。所以他们被发送了,只有 Echo 的接收才会出现问题。我的 Echo 配置如下所示:
this.websocket = new Echo({
broadcaster: 'pusher',
key: 'KEY',
cluster: 'eu',
encrypted: false,
authEndpoint: 'http://127.0.0.1:8000/broadcasting/auth'
});
this.id = 1;
this.websocket.private('notification.' + this.id).listen('CreditsSent', e => {
console.log(e);
});
我正在使用 Laravel 5.4 和 PHP 7.x。有人可以帮忙吗,因为我迷路了。