1

一段时间以来,这一直是一个长期存在的问题,在我开始之前,这是我尝试过的以及寻找解决方案的地方。

我尝试过的几件事

我已确保我的集群对于我正在使用的应用程序是正确的: https
://laracasts.com/discuss/channels/laravel/pusher-is-not-receiving-my-message?page=1 我的集群是eu

我已经尝试了所有命名空间的变体:
https .App.Events.DefaultPusherEvent : //laracasts.com/discuss/channels/laravel/echo-broadcast-event-listener-not-being-triggeredApp\Events\DefaultPusherEvent.DefaultPusherEvent...

我的情景

因此,我正在尝试使用 Laravel 和 Pusher 来掌握实时更新,以便最终我可以实现实时通知以及我们将来需要的任何其他内容。

根据 Laravel 文档,我能够向我的推送应用程序广播。

它的工作...

所以这一切都很好,没有问题,我唯一的问题实际上是尝试使用 Laravel 的回声甚至 Pusher 的香草代码来消费这个事件。

我以前遇到过这个问题,我的解决方案是不使用私人频道(因为它们根本不适合我)。但现在我需要这个功能。

进步

在发布这个问题之前,我重新安装了 Laravel 并再次安装,但结果是一样的。我什至制作了一个登录系统,以确保不是因为我的用户不是因为我的用户没有登录到应用程序。

ListenForPusherEvents(){
    Echo.private(`datalev`)
        .listen('DefaultPusherEvent', (e) => {
            console.log(e);
            console.log('Something');
        });
}

我也没有控制台错误,因为我已经使用 pushers'broadcasting/auth'目录对用户进行了身份验证

这是验证私人频道用户的代码。

public function PusherAuthentication(Request $request)
{
    $pusher = new Pusher(env('PUSHER_APP_KEY'), env('PUSHER_APP_SECRET'), env('PUSHER_APP_ID'), ['cluster' => 'eu']);
    $pusher->socket_auth($request->input('channel_name'), $request->input('socket_id'));
}
4

1 回答 1

3

确保您的广播/身份验证路由正确返回带有身份验证键的 JSON 对象。Pusher 使用它来验证您对频道的订阅。

过程如下:

  1. 您的客户想要订阅,并询问 Laravel 是否可以(/broadcasting/auth AJAX 调用)

  2. 你的 Laravel 确认没问题并通知推送者;您将获得一个唯一的身份验证密钥,该密钥通过 AJAX 发送回您的客户端

  3. 然后,您的 JavaScript 可以使用从 Laravel 接收到的身份验证密钥订阅 Pusher 频道,这被 Pusher 称为有效密钥,因此 Pusher 将接受它。

于 2017-12-22T16:03:19.627 回答